-
Notifications
You must be signed in to change notification settings - Fork 0
/
benchmark.js
60 lines (47 loc) · 4.57 KB
/
benchmark.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var n1 = '342394823858259823958293891829819853938195819385983985238592835982935829385923853423948238582598239582938918298198539381958193859839852385928359829358293859238534239482385825982395829389182981985393819581938598398523859283598293582938592385.3420923940982183187509127537032875817836129581968'
var n2 = '324235872385728375827387518728472385728475827582738572837587238752873587236872387458273242358723857283758273875187284723857284758275827385728375872387528735872368723874582732423587238572837582738751872847238572847582758273857283758723875287358723687238745827.92839891839852983598238592385982395823989283'
const infDecimal = require('break_infinity.js')
const mikDecimal = require('decimal.js')
const cDecimal = require('./index.js')
now = () => (new Date()).valueOf();
function benchmark(name, fn, loops) {
var start = loops;
var times = [];
while (loops--) {
var t = now();
fn();
times.push(now() - t);
}
var average = times.reduce((a, b) => a + b) / times.length;
console.log(`${start} loops | ${name}:\t\t${average}`);
}
benchmark('break_infinity', function () {
return new infDecimal(n1).mul(new infDecimal(n2))
}, 10000)
benchmark('decimal.js', function () {
return new mikDecimal(n1).mul(new mikDecimal(n2))
}, 10000)
benchmark('clio-decimal', function () {
return new cDecimal(n1).mul(new cDecimal(n2))
}, 10000)
/*
10000 loops | break_infinity: 0.0024
10000 loops | decimal.js: 0.0312
10000 loops | clio-decimal: 0.0072
Returned values:
break infinity:
1.1101668441404067e+497
2.2203336882808133e+497 | on 2x
decimal.js
1.1101668441404067772e+497
2.2203336882808135544e+497
4.4406673765616271088e+497
8.8813347531232542176e+497 | on 8x
3.9966006389054643979e+498 | 36x
clio-decimal:
111016684414040677722234907610492040353583251662092092165698575805361802515749399802368484580075600025634148970785762492303478506003635334001651418094557857936428257171767817160396944569522558586283576624349769655204167153284339879223344691286897961435958360403101521327332882227306443675115663253030709879472679579528541213547411659836612157668381547612677698420635471832207399285280236515083726697794895898186820904615781489946491899620814520044599713786901256082191965255149857263082809472449748.383017124627948709950834531597938793710735674957548778...
222033368828081355444469815220984080707166503324184184331397151610723605031498799604736969160151200051268297941571524984606957012007270668003302836189115715872856514343535634320793889139045117172567153248699539310408334306568679758446689382573795922871916720806203042654665764454612887350231326506061419758945359159057082427094823319673224315336763095225355396841270943664414798570560473030167453395589791796373641809231562979892983799241629040089199427573802512164383930510299714526165618944899496.766034249255897419901669063195877587421471349915097557...
444066737656162710888939630441968161414333006648368368662794303221447210062997599209473938320302400102536595883143049969213914024014541336006605672378231431745713028687071268641587778278090234345134306497399078620816668613137359516893378765147591845743833441612406085309331528909225774700462653012122839517890718318114164854189646639346448630673526190450710793682541887328829597141120946060334906791179583592747283618463125959785967598483258080178398855147605024328767861020599429052331237889798993.532068498511794839803338126391755174842942699830195114...
888133475312325421777879260883936322828666013296736737325588606442894420125995198418947876640604800205073191766286099938427828048029082672013211344756462863491426057374142537283175556556180468690268612994798157241633337226274719033786757530295183691487666883224812170618663057818451549400925306024245679035781436636228329708379293278692897261347052380901421587365083774657659194282241892120669813582359167185494567236926251919571935196966516160356797710295210048657535722041198858104662475779597987.064136997023589679606676252783510349685885399660390228...
3996600638905464398000456673977713452728997059835315317965148728993024890566978392885265444882721600922829362948287449722925226216130872024059451051404082885711417258183641417774290004502812109106208758476591707587350017518236235652040408886328326611694500974511654767783983760183031972304163877109105555661016464863027483687706819754118037676061735714056397143142876985959466374270088514543014161120616252334725552566168133638073708386349322721605589696328445218958910749185394861470981141008190941.788616486606153558230043137525796573586484298471756029...
*/