1+
2+ const testData = require ( './testData' ) ;
3+ const index = require ( '../index' ) ;
4+ const Benchmark = require ( 'benchmark' ) ;
5+
6+ function runBenchmark ( data , name ) {
7+ return new Promise ( ( resolve ) => {
8+ console . log ( `\n=== Benchmarking ${ name } ===` ) ;
9+
10+ const suite = new Benchmark . Suite ( name ) ;
11+
12+ suite . add ( name , ( ) => {
13+ index . sort ( data ) ;
14+ } )
15+ . on ( 'cycle' , ( event ) => {
16+ console . log ( String ( event . target ) ) ;
17+ } )
18+ . on ( 'complete' , function ( ) {
19+ resolve ( ) ;
20+ } )
21+ . run ( { 'async' : true } ) ;
22+ } ) ;
23+ }
24+
25+ function runSyncBenchmark ( data , name ) {
26+ console . log ( `\n=== Benchmarking Sync ${ name } ===` ) ;
27+
28+ const suite = new Benchmark . Suite ( name ) ;
29+
30+ suite . add ( name , ( ) => {
31+ index . sort ( data ) ;
32+ } )
33+ . on ( 'cycle' , ( event ) => {
34+ console . log ( String ( event . target ) ) ;
35+ } )
36+ . run ( ) ;
37+ }
38+
39+ // Benchmark all test cases
40+ console . log ( '\n=== Shallow Objects ===' ) ;
41+ Object . entries ( testData . shallow ) . forEach ( ( [ key , data ] ) => {
42+ runSyncBenchmark ( data , `Shallow ${ key } ` ) ;
43+ } ) ;
44+
45+ console . log ( '\n=== Nested Objects ===' ) ;
46+ Object . entries ( testData . nested ) . forEach ( ( [ key , data ] ) => {
47+ runSyncBenchmark ( data , `Nested ${ key } ` ) ;
48+ } ) ;
49+
50+ console . log ( '\n=== Mixed Objects ===' ) ;
51+ runSyncBenchmark ( testData . mixed , 'Mixed data' ) ;
52+
53+ // Async benchmarks
54+ function runAsyncBenchmark ( data , name ) {
55+ return new Promise ( ( resolve ) => {
56+ console . log ( `\n=== Benchmarking Async ${ name } ===` ) ;
57+
58+ const suite = new Benchmark . Suite ( name ) ;
59+
60+ suite . add ( name , {
61+ defer : true ,
62+ fn : async ( deferred ) => {
63+ await index . sortAsync ( data ) ;
64+ deferred . resolve ( ) ;
65+ }
66+ } )
67+ . on ( 'cycle' , ( event ) => {
68+ console . log ( String ( event . target ) ) ;
69+ } )
70+ . on ( 'complete' , function ( ) {
71+ resolve ( ) ;
72+ } )
73+ . run ( { 'async' : true } ) ;
74+ } ) ;
75+ }
76+
77+ // Run async benchmarks
78+ ( async ( ) => {
79+ console . log ( '\n=== Async Benchmarks ===' ) ;
80+ await runAsyncBenchmark ( testData . shallow . large , 'Large Shallow' ) ;
81+ await runAsyncBenchmark ( testData . nested . large , 'Large Nested' ) ;
82+ await runAsyncBenchmark ( testData . mixed , 'Mixed Data' ) ;
83+ } ) ( ) ;
0 commit comments