11let { stacks } = require ( './../index' ) ;
22let ptime = require ( 'quick-ptime' ) ;
3+ const Table = require ( 'cli-table' ) ;
34
45
56// setup stacks
67let linkedStack = new stacks . LinkedStack ( ) ;
78let uArrayStack = new stacks . UArrayStack ( ) ;
8- let bArrayStack = new stacks . BArrayStack ( 100000 ) ;
9+ let bArrayStack = new stacks . BArrayStack ( 1100001 ) ;
10+
11+ /**
12+ * PUSH STUFF
13+ */
914
1015// push 100,000 items onto the stack
1116ptime . setTime ( 'stack100000' ) ;
1217for ( let i = 0 ; i < 100000 ; i ++ ) {
1318 linkedStack . push ( 'value' ) ;
1419}
15- console . log ( "Push 100,000 Linked Stack timing:" , ptime . elapsedTime ( 'stack100000' ) . formatted ) ;
20+ let stackTime = ptime . elapsedTime ( 'stack100000' ) ;
21+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
22+
23+ // push 1,000,000 items onto the stack
24+ ptime . setTime ( 'stack1000000' ) ;
25+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
26+ linkedStack . push ( 'value' ) ;
27+ }
28+ let mStackTime = ptime . elapsedTime ( 'stack1000000' ) ;
29+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
30+
31+ // push 1 item onto the stack
32+ ptime . setTime ( 'stack1' ) ;
33+ for ( let i = 0 ; i < 1 ; i ++ ) {
34+ linkedStack . push ( 'value' ) ;
35+ }
36+ let sStackTime = ptime . elapsedTime ( 'stack1' ) ;
37+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
38+
1639
17- ptime . setTime ( 'uarraystack100000' ) ;
40+
41+
42+
43+ // push 100,000 items onto the stack
44+ ptime . setTime ( 'ustack100000' ) ;
1845for ( let i = 0 ; i < 100000 ; i ++ ) {
1946 uArrayStack . push ( 'value' ) ;
2047}
21- console . log ( "Push 100,000 Unbounded Array Stack timing:" , ptime . elapsedTime ( 'uarraystack100000' ) . formatted ) ;
48+ let ustackTime = ptime . elapsedTime ( 'ustack100000' ) ;
49+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
50+
51+ // push 1,000,000 items onto the stack
52+ ptime . setTime ( 'ustack1000000' ) ;
53+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
54+ uArrayStack . push ( 'value' ) ;
55+ }
56+ let umStackTime = ptime . elapsedTime ( 'ustack1000000' ) ;
57+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
2258
23- ptime . setTime ( 'barraystack100000' ) ;
59+ // push 1 item onto the stack
60+ ptime . setTime ( 'ustack1' ) ;
61+ for ( let i = 0 ; i < 1 ; i ++ ) {
62+ uArrayStack . push ( 'value' ) ;
63+ }
64+ let usStackTime = ptime . elapsedTime ( 'ustack1' ) ;
65+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
66+
67+
68+
69+
70+ // push 100,000 items onto the stack
71+ ptime . setTime ( 'bstack100000' ) ;
2472for ( let i = 0 ; i < 100000 ; i ++ ) {
2573 bArrayStack . push ( 'value' ) ;
2674}
27- console . log ( "Push 100,000 Bounded Array Stack timing:" , ptime . elapsedTime ( 'barraystack100000' ) . formatted ) ;
75+ let bstackTime = ptime . elapsedTime ( 'bstack100000' ) ;
76+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
77+
78+ // push 1,000,000 items onto the stack
79+ ptime . setTime ( 'bstack1000000' ) ;
80+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
81+ bArrayStack . push ( 'value' ) ;
82+ }
83+ let bmStackTime = ptime . elapsedTime ( 'bstack1000000' ) ;
84+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
85+
86+ // push 1 item onto the stack
87+ ptime . setTime ( 'bstack1' ) ;
88+ for ( let i = 0 ; i < 1 ; i ++ ) {
89+ bArrayStack . push ( 'value' ) ;
90+ }
91+ let bsStackTime = ptime . elapsedTime ( 'bstack1' ) ;
92+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
93+
2894
2995
30- // pop 100,000 items off the stack
96+
97+ /**
98+ * POP STUFF
99+ */
100+
101+ // push 100,000 items onto the stack
31102ptime . setTime ( 'pstack100000' ) ;
32103for ( let i = 0 ; i < 100000 ; i ++ ) {
33- linkedStack . pop ( )
104+ linkedStack . pop ( 'value' ) ;
105+ }
106+ let pstackTime = ptime . elapsedTime ( 'pstack100000' ) ;
107+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
108+
109+ // push 1,000,000 items onto the stack
110+ ptime . setTime ( 'pstack1000000' ) ;
111+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
112+ linkedStack . pop ( 'value' ) ;
113+ }
114+ let pmStackTime = ptime . elapsedTime ( 'pstack1000000' ) ;
115+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
116+
117+ // push 1 item onto the stack
118+ ptime . setTime ( 'pstack1' ) ;
119+ for ( let i = 0 ; i < 1 ; i ++ ) {
120+ linkedStack . pop ( 'value' ) ;
34121}
35- console . log ( "Pop 100,000 Stack timing:" , ptime . elapsedTime ( 'pstack100000' ) . formatted ) ;
122+ let psStackTime = ptime . elapsedTime ( 'pstack1' ) ;
123+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
124+
36125
37- ptime . setTime ( 'puarraystack100000' ) ;
126+
127+ // push 100,000 items onto the stack
128+ ptime . setTime ( 'upstack100000' ) ;
38129for ( let i = 0 ; i < 100000 ; i ++ ) {
39- uArrayStack . pop ( )
130+ uArrayStack . pop ( 'value' ) ;
131+ }
132+ let upstackTime = ptime . elapsedTime ( 'upstack100000' ) ;
133+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
134+
135+ // push 1,000,000 items onto the stack
136+ ptime . setTime ( 'upstack1000000' ) ;
137+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
138+ uArrayStack . pop ( 'value' ) ;
40139}
41- console . log ( "Pop 100,000 Unbounded Array Stack timing:" , ptime . elapsedTime ( 'puarraystack100000' ) . formatted ) ;
140+ let upmStackTime = ptime . elapsedTime ( 'upstack1000000' ) ;
141+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
142+
143+ // push 1 item onto the stack
144+ ptime . setTime ( 'upstack1' ) ;
145+ for ( let i = 0 ; i < 1 ; i ++ ) {
146+ uArrayStack . pop ( 'value' ) ;
147+ }
148+ let upsStackTime = ptime . elapsedTime ( 'upstack1' ) ;
149+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
150+
42151
43- ptime . setTime ( 'pbarraystack100000' ) ;
152+
153+
154+
155+ // push 100,000 items onto the stack
156+ ptime . setTime ( 'bpstack100000' ) ;
44157for ( let i = 0 ; i < 100000 ; i ++ ) {
45- bArrayStack . pop ( )
158+ bArrayStack . pop ( 'value' ) ;
159+ }
160+ let bpstackTime = ptime . elapsedTime ( 'bpstack100000' ) ;
161+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
162+
163+ // push 1,000,000 items onto the stack
164+ ptime . setTime ( 'bpstack1000000' ) ;
165+ for ( let i = 0 ; i < 1000000 ; i ++ ) {
166+ bArrayStack . pop ( 'value' ) ;
167+ }
168+ let bpmStackTime = ptime . elapsedTime ( 'bpstack1000000' ) ;
169+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
170+
171+ // push 1 item onto the stack
172+ ptime . setTime ( 'bpstack1' ) ;
173+ for ( let i = 0 ; i < 1 ; i ++ ) {
174+ bArrayStack . pop ( 'value' ) ;
46175}
47- console . log ( "Pop 100,000 Bounded Array Stack timing:" , ptime . elapsedTime ( 'pbarraystack100000' ) . formatted ) ;
176+ let bpsStackTime = ptime . elapsedTime ( 'bpstack1' ) ;
177+ // console.log("Push 100,000 Linked Stack timing:", ptime.elapsedTime('stack100000').formatted);
178+
179+
180+ /// Output results
181+
182+ const table = new Table ( {
183+ head : [ 'Stack Operation' , '100,000 items' , '1,000,000 items' , '1 item' ]
184+ } ) ;
185+
186+
187+ table . push (
188+ [ 'Linked List Stack Push' , stackTime . formatted , mStackTime . formatted , sStackTime . formatted ] ,
189+ [ 'Unbounded Array Stack Push' , ustackTime . formatted , umStackTime . formatted , usStackTime . formatted ] ,
190+ [ 'Bounded Array Stack Push' , bstackTime . formatted , bmStackTime . formatted , bsStackTime . formatted ] ,
191+ [ 'Linked List Stack Pop' , pstackTime . formatted , pmStackTime . formatted , psStackTime . formatted ] ,
192+ [ 'Unbounded Array Stack Pop' , upstackTime . formatted , upmStackTime . formatted , upsStackTime . formatted ] ,
193+ [ 'Bounded Array Stack Pop' , bpstackTime . formatted , bpmStackTime . formatted , bpsStackTime . formatted ] ,
194+ ) ;
195+
196+ console . log ( table . toString ( ) ) ;
0 commit comments