@@ -5,48 +5,91 @@ var ProgressBar = require('progress');
55
66let bar ;
77
8- const standard = async ( name , func , value ) => {
9- // console.log("Running...", name);
10- const result = [
11- ( await ptime . runFunctionRounds ( `${ name } 100000` , func , [ value ] , 100000 , true ) ) . formatted ,
12- ( await ptime . runFunctionRounds ( `${ name } 1000000` , func , [ value ] , 1000000 , true ) ) . formatted ,
13- ( await ptime . runFunctionRounds ( `${ name } 10000000` , func , [ value ] , 10000000 , true ) ) . formatted ,
14- ( await ptime . runFunctionAverage ( `${ name } 1` , func , [ value ] , 1000000 , true ) ) . formatted ,
15- ] ;
16-
17- let str = { } ;
18- str [ name ] = result ;
19- bar . tick ( ) ;
20- return str ;
21- } ;
22-
23- const run = async ( ) => {
24- bar = new ProgressBar ( ':bar :percent :elapseds total, completes in :etas' , { total : 11 } ) ;
25- let results = [ ] ;
26- let linkedStack = new stacks . LinkedStack ( ) ;
27- let uArrayStack = new stacks . UArrayStack ( ) ;
28- bar . tick ( ) ;
29- let bArrayStack = new stacks . BArrayStack ( 12100000 ) ;
30-
31- bar . tick ( ) ;
8+ const testStandard = async ( name , adt , count ) => {
9+ const iADT = new adt ( count ) ;
10+ bar . tick ( {
11+ token1 : `${ name } adt setup` ,
12+ } ) ;
13+ results = [ ] ;
14+ results . push (
15+ ( await ptime . runFunctionRounds ( `${ name } push ${ count } ` , iADT . push . bind ( iADT ) , [ 1 ] , count , true ) ) . formatted
16+ ) ;
17+ bar . tick ( {
18+ token1 : `${ name } push ${ count } ` ,
19+ } ) ;
3220 results . push (
33- await standard ( 'LinkedStack Push' , linkedStack . push . bind ( linkedStack ) , 1 ) ,
34- await standard ( 'UArrayStack Push' , uArrayStack . push . bind ( uArrayStack ) , 1 ) ,
35- await standard ( 'BArrayStack Push' , bArrayStack . push . bind ( bArrayStack ) , 1 ) ,
36- await standard ( 'LinkedStack Top' , linkedStack . top . bind ( linkedStack ) , 1 ) ,
37- await standard ( 'UArrayStack Top' , uArrayStack . top . bind ( uArrayStack ) , 1 ) ,
38- await standard ( 'BArrayStack Top' , bArrayStack . top . bind ( bArrayStack ) , 1 ) ,
39- await standard ( 'LinkedStack Pop' , linkedStack . pop . bind ( linkedStack ) , 1 ) ,
40- await standard ( 'UArrayStack Pop' , uArrayStack . pop . bind ( uArrayStack ) , 1 ) ,
41- await standard ( 'BArrayStack Pop' , bArrayStack . pop . bind ( bArrayStack ) , 1 )
21+ ( await ptime . runFunctionRounds ( `${ name } top ${ count } ` , iADT . top . bind ( iADT ) , [ 1 ] , count , true ) ) . formatted
4222 ) ;
23+ bar . tick ( {
24+ token1 : `${ name } top ${ count } ` ,
25+ } ) ;
26+ results . push (
27+ ( await ptime . runFunctionRounds ( `${ name } pop ${ count } ` , iADT . pop . bind ( iADT ) , [ 1 ] , count , true ) ) . formatted
28+ ) ;
29+ bar . tick ( {
30+ token1 : `${ name } pop ${ count } ` ,
31+ } ) ;
4332
4433 return results ;
4534} ;
4635
36+ const run = async ( ) => {
37+ bar = new ProgressBar ( ':bar Last Completed :token1 :percent :elapseds total, completes in :etas' , { total : 34 } ) ;
38+ bar . tick ( {
39+ token1 : 'progress bar' ,
40+ } ) ;
41+
42+ let results = { } ;
43+
44+ results [ 'LinkedStack Push' ] = [ ] ;
45+ results [ 'UArrayStack Push' ] = [ ] ;
46+ results [ 'BArrayStack Push' ] = [ ] ;
47+
48+ results [ 'LinkedStack Top' ] = [ ] ;
49+ results [ 'UArrayStack Top' ] = [ ] ;
50+ results [ 'BArrayStack Top' ] = [ ] ;
51+
52+ results [ 'LinkedStack Pop' ] = [ ] ;
53+ results [ 'UArrayStack Pop' ] = [ ] ;
54+ results [ 'BArrayStack Pop' ] = [ ] ;
55+
56+ bar . tick ( {
57+ token1 : 'result sets setup' ,
58+ } ) ;
59+
60+ const l100000 = await testStandard ( 'LinkedStack' , stacks . LinkedStack , 100000 ) ;
61+ const l1000000 = await testStandard ( 'LinkedStack' , stacks . LinkedStack , 1000000 ) ;
62+ results [ 'LinkedStack Push' ] . push ( l100000 [ 0 ] , l1000000 [ 0 ] ) ;
63+ results [ 'LinkedStack Top' ] . push ( l100000 [ 1 ] , l1000000 [ 1 ] ) ;
64+ results [ 'LinkedStack Pop' ] . push ( l100000 [ 2 ] , l1000000 [ 2 ] ) ;
65+
66+ const u100000 = await testStandard ( 'UArrayStack' , stacks . UArrayStack , 100000 ) ;
67+ const u1000000 = await testStandard ( 'UArrayStack' , stacks . UArrayStack , 1000000 ) ;
68+ results [ 'UArrayStack Push' ] . push ( u100000 [ 0 ] , u1000000 [ 0 ] ) ;
69+ results [ 'UArrayStack Top' ] . push ( u100000 [ 1 ] , u1000000 [ 1 ] ) ;
70+ results [ 'UArrayStack Pop' ] . push ( u100000 [ 2 ] , u100000 [ 2 ] ) ;
71+
72+ const b100000 = await testStandard ( 'BArrayStack' , stacks . BArrayStack , 100000 ) ;
73+ const b1000000 = await testStandard ( 'BArrayStack' , stacks . BArrayStack , 1000000 ) ;
74+ results [ 'BArrayStack Push' ] . push ( b100000 [ 0 ] , b1000000 [ 0 ] ) ;
75+ results [ 'BArrayStack Top' ] . push ( b100000 [ 1 ] , b1000000 [ 1 ] ) ;
76+ results [ 'BArrayStack Pop' ] . push ( b100000 [ 2 ] , b100000 [ 2 ] ) ;
77+
78+ let items = [ ] ;
79+
80+ let keys = Object . keys ( results ) ;
81+ for ( let i = 0 ; i < keys . length ; i ++ ) {
82+ let item = { } ;
83+ item [ keys [ i ] ] = results [ keys [ i ] ] ;
84+ items . push ( item ) ;
85+ }
86+
87+ return items ;
88+ } ;
89+
4790run ( ) . then ( value => {
4891 const table = new Table ( {
49- head : [ 'Stack Operation' , '100,000 items' , '1,000,000 items' , '10,000,000 items' , '1 item AVG' ] ,
92+ head : [ 'Stack Operation' , '100,000 items' , '1,000,000 items' ] ,
5093 } ) ;
5194
5295 table . push ( ...value ) ;
0 commit comments