add a small sort comparison tool
							parent
							
								
									ede2b798f6
								
							
						
					
					
						commit
						4ffcf031fa
					
				| 
						 | 
					@ -0,0 +1,139 @@
 | 
				
			||||||
 | 
					# ./v -prod -cc clang-12 cmd/tools/bench/sorting.v
 | 
				
			||||||
 | 
					# for seqkind in increasing decreasing random; do 
 | 
				
			||||||
 | 
					#   for how in qsort aswcc; do
 | 
				
			||||||
 | 
					#     for x in 10_000_000 1000_000 100_000 10_000 1000 100 10 ; do
 | 
				
			||||||
 | 
					#       ./cmd/tools/bench/sorting $how $x $seqkind;
 | 
				
			||||||
 | 
					#     done;
 | 
				
			||||||
 | 
					#   done;
 | 
				
			||||||
 | 
					#   echo --------------------------------;
 | 
				
			||||||
 | 
					# done > cmd/tools/bench/sorting.results.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999994, 9999995, 9999996, 9999997, 9999998, 9999999, 10000000]
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999994, 9999995, 9999996, 9999997, 9999998, 9999999, 10000000]
 | 
				
			||||||
 | 
					SPENT  461.034 ms in qsort 10000000 increasing
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999994, 999995, 999996, 999997, 999998, 999999, 1000000]
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999994, 999995, 999996, 999997, 999998, 999999, 1000000]
 | 
				
			||||||
 | 
					SPENT   40.616 ms in qsort 1000000 increasing
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99994, 99995, 99996, 99997, 99998, 99999, 100000]
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99994, 99995, 99996, 99997, 99998, 99999, 100000]
 | 
				
			||||||
 | 
					SPENT    4.415 ms in qsort 100000 increasing
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9994, 9995, 9996, 9997, 9998, 9999, 10000]       
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9994, 9995, 9996, 9997, 9998, 9999, 10000]       
 | 
				
			||||||
 | 
					SPENT    0.304 ms in qsort 10000 increasing
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [994, 995, 996, 997, 998, 999, 1000]              
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [994, 995, 996, 997, 998, 999, 1000]              
 | 
				
			||||||
 | 
					SPENT    0.042 ms in qsort 1000 increasing
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [94, 95, 96, 97, 98, 99, 100]                     
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [94, 95, 96, 97, 98, 99, 100]                     
 | 
				
			||||||
 | 
					SPENT    0.009 ms in qsort 100 increasing
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [4, 5, 6, 7, 8, 9, 10]                            
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [4, 5, 6, 7, 8, 9, 10]                            
 | 
				
			||||||
 | 
					SPENT    0.005 ms in qsort 10 increasing
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999994, 9999995, 9999996, 9999997, 9999998, 9999999, 10000000]
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999994, 9999995, 9999996, 9999997, 9999998, 9999999, 10000000]
 | 
				
			||||||
 | 
					SPENT  109.615 ms in aswcc 10000000 increasing
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999994, 999995, 999996, 999997, 999998, 999999, 1000000]
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999994, 999995, 999996, 999997, 999998, 999999, 1000000]
 | 
				
			||||||
 | 
					SPENT   10.520 ms in aswcc 1000000 increasing
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99994, 99995, 99996, 99997, 99998, 99999, 100000]
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99994, 99995, 99996, 99997, 99998, 99999, 100000]
 | 
				
			||||||
 | 
					SPENT    1.038 ms in aswcc 100000 increasing
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9994, 9995, 9996, 9997, 9998, 9999, 10000]       
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9994, 9995, 9996, 9997, 9998, 9999, 10000]       
 | 
				
			||||||
 | 
					SPENT    0.106 ms in aswcc 10000 increasing
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [994, 995, 996, 997, 998, 999, 1000]              
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [994, 995, 996, 997, 998, 999, 1000]              
 | 
				
			||||||
 | 
					SPENT    0.016 ms in aswcc 1000 increasing
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [94, 95, 96, 97, 98, 99, 100]                     
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [94, 95, 96, 97, 98, 99, 100]                     
 | 
				
			||||||
 | 
					SPENT    0.006 ms in aswcc 100 increasing
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [4, 5, 6, 7, 8, 9, 10]                            
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [4, 5, 6, 7, 8, 9, 10]                            
 | 
				
			||||||
 | 
					SPENT    0.005 ms in aswcc 10 increasing
 | 
				
			||||||
 | 
					--------------------------------
 | 
				
			||||||
 | 
					> a.len:      9999999 | a: [9999999, 9999998, 9999997, 9999996, 9999995, 9999994, 9999993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:      9999999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999993, 9999994, 9999995, 9999996, 9999997, 9999998, 9999999]
 | 
				
			||||||
 | 
					SPENT  452.092 ms in qsort 10000000 decreasing
 | 
				
			||||||
 | 
					> a.len:       999999 | a: [999999, 999998, 999997, 999996, 999995, 999994, 999993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:       999999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999993, 999994, 999995, 999996, 999997, 999998, 999999]
 | 
				
			||||||
 | 
					SPENT   39.840 ms in qsort 1000000 decreasing
 | 
				
			||||||
 | 
					> a.len:        99999 | a:  [99999, 99998, 99997, 99996, 99995, 99994, 99993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:        99999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99993, 99994, 99995, 99996, 99997, 99998, 99999] 
 | 
				
			||||||
 | 
					SPENT    3.609 ms in qsort 100000 decreasing
 | 
				
			||||||
 | 
					> a.len:         9999 | a:         [9999, 9998, 9997, 9996, 9995, 9994, 9993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:         9999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9993, 9994, 9995, 9996, 9997, 9998, 9999]        
 | 
				
			||||||
 | 
					SPENT    0.430 ms in qsort 10000 decreasing
 | 
				
			||||||
 | 
					> a.len:          999 | a:                [999, 998, 997, 996, 995, 994, 993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:          999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [993, 994, 995, 996, 997, 998, 999]               
 | 
				
			||||||
 | 
					SPENT    0.058 ms in qsort 1000 decreasing
 | 
				
			||||||
 | 
					> a.len:           99 | a:                       [99, 98, 97, 96, 95, 94, 93] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:           99 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [93, 94, 95, 96, 97, 98, 99]                      
 | 
				
			||||||
 | 
					SPENT    0.013 ms in qsort 100 decreasing
 | 
				
			||||||
 | 
					> a.len:            9 | a:                              [9, 8, 7, 6, 5, 4, 3] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:            9 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [3, 4, 5, 6, 7, 8, 9]                             
 | 
				
			||||||
 | 
					SPENT    0.006 ms in qsort 10 decreasing
 | 
				
			||||||
 | 
					> a.len:      9999999 | a: [9999999, 9999998, 9999997, 9999996, 9999995, 9999994, 9999993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:      9999999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9999993, 9999994, 9999995, 9999996, 9999997, 9999998, 9999999]
 | 
				
			||||||
 | 
					SPENT 2313.316 ms in aswcc 10000000 decreasing
 | 
				
			||||||
 | 
					> a.len:       999999 | a: [999999, 999998, 999997, 999996, 999995, 999994, 999993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:       999999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [999993, 999994, 999995, 999996, 999997, 999998, 999999]
 | 
				
			||||||
 | 
					SPENT  203.740 ms in aswcc 1000000 decreasing
 | 
				
			||||||
 | 
					> a.len:        99999 | a:  [99999, 99998, 99997, 99996, 99995, 99994, 99993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:        99999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [99993, 99994, 99995, 99996, 99997, 99998, 99999] 
 | 
				
			||||||
 | 
					SPENT   17.406 ms in aswcc 100000 decreasing
 | 
				
			||||||
 | 
					> a.len:         9999 | a:         [9999, 9998, 9997, 9996, 9995, 9994, 9993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:         9999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [9993, 9994, 9995, 9996, 9997, 9998, 9999]        
 | 
				
			||||||
 | 
					SPENT    1.467 ms in aswcc 10000 decreasing
 | 
				
			||||||
 | 
					> a.len:          999 | a:                [999, 998, 997, 996, 995, 994, 993] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:          999 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [993, 994, 995, 996, 997, 998, 999]               
 | 
				
			||||||
 | 
					SPENT    0.137 ms in aswcc 1000 decreasing
 | 
				
			||||||
 | 
					> a.len:           99 | a:                       [99, 98, 97, 96, 95, 94, 93] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:           99 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [93, 94, 95, 96, 97, 98, 99]                      
 | 
				
			||||||
 | 
					SPENT    0.015 ms in aswcc 100 decreasing
 | 
				
			||||||
 | 
					> a.len:            9 | a:                              [9, 8, 7, 6, 5, 4, 3] ... [7, 6, 5, 4, 3, 2, 1]                             
 | 
				
			||||||
 | 
					> a.len:            9 | a:                              [1, 2, 3, 4, 5, 6, 7] ... [3, 4, 5, 6, 7, 8, 9]                             
 | 
				
			||||||
 | 
					SPENT    0.005 ms in aswcc 10 decreasing
 | 
				
			||||||
 | 
					--------------------------------
 | 
				
			||||||
 | 
					> a.len:     10000000 | a: [5860191, 5357534, 516370, 444218, 4782576, 3296560, 9597422] ... [9885313, 9298812, 1016850, 595010, 3994125, 6996906, 8189289]
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 3, 4, 4, 5] ... [9999994, 9999994, 9999995, 9999996, 9999997, 9999998, 9999998]
 | 
				
			||||||
 | 
					SPENT 1490.203 ms in qsort 10000000 random
 | 
				
			||||||
 | 
					> a.len:      1000000 | a: [564075, 516370, 444218, 588272, 209384, 864959, 195323] ... [363186, 584539, 475461, 794706, 23108, 232638, 590085]
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 1, 1, 1, 1, 3, 3] ... [999990, 999990, 999991, 999993, 999995, 999997, 999998]
 | 
				
			||||||
 | 
					SPENT  128.973 ms in qsort 1000000 random
 | 
				
			||||||
 | 
					> a.len:       100000 | a:  [93023, 39787, 90906, 63984, 21510, 44477, 62876] ... [61585, 45923, 26539, 20911, 51779, 34695, 29023] 
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 1, 2, 3, 4, 5, 7] ... [99991, 99992, 99994, 99994, 99998, 99998, 99999] 
 | 
				
			||||||
 | 
					SPENT   10.583 ms in qsort 100000 random
 | 
				
			||||||
 | 
					> a.len:        10000 | a:            [7019, 733, 7844, 97, 1994, 2517, 8308] ... [1293, 4423, 8853, 6021, 9549, 4161, 3700]        
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 1, 2, 2, 2, 3, 3] ... [9992, 9992, 9994, 9995, 9998, 9998, 9999]        
 | 
				
			||||||
 | 
					SPENT    0.873 ms in qsort 10000 random
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                [863, 875, 274, 733, 794, 496, 494] ... [530, 615, 371, 561, 800, 501, 585]               
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [2, 3, 4, 4, 5, 6, 6] ... [994, 994, 994, 994, 996, 997, 998]               
 | 
				
			||||||
 | 
					SPENT    0.079 ms in qsort 1000 random
 | 
				
			||||||
 | 
					> a.len:          100 | a:                        [95, 18, 58, 26, 6, 48, 67] ... [11, 80, 16, 60, 58, 71, 1]                       
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 3, 4, 5, 5, 6, 6] ... [94, 95, 95, 97, 97, 98, 99]                      
 | 
				
			||||||
 | 
					SPENT    0.010 ms in qsort 100 random
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [4, 6, 3, 8, 1, 4, 7] ... [8, 1, 4, 7, 5, 8, 4]                             
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 3, 4, 4, 4, 5, 6] ... [4, 4, 5, 6, 7, 8, 8]                             
 | 
				
			||||||
 | 
					SPENT    0.005 ms in qsort 10 random
 | 
				
			||||||
 | 
					> a.len:     10000000 | a: [5860191, 5357534, 516370, 444218, 4782576, 3296560, 9597422] ... [9885313, 9298812, 1016850, 595010, 3994125, 6996906, 8189289]
 | 
				
			||||||
 | 
					> a.len:     10000000 | a:                              [1, 2, 3, 3, 4, 4, 5] ... [9999994, 9999994, 9999995, 9999996, 9999997, 9999998, 9999998]
 | 
				
			||||||
 | 
					SPENT 6279.383 ms in aswcc 10000000 random
 | 
				
			||||||
 | 
					> a.len:      1000000 | a: [564075, 516370, 444218, 588272, 209384, 864959, 195323] ... [363186, 584539, 475461, 794706, 23108, 232638, 590085]
 | 
				
			||||||
 | 
					> a.len:      1000000 | a:                              [1, 1, 1, 1, 1, 3, 3] ... [999990, 999990, 999991, 999993, 999995, 999997, 999998]
 | 
				
			||||||
 | 
					SPENT  369.465 ms in aswcc 1000000 random
 | 
				
			||||||
 | 
					> a.len:       100000 | a:  [93023, 39787, 90906, 63984, 21510, 44477, 62876] ... [61585, 45923, 26539, 20911, 51779, 34695, 29023] 
 | 
				
			||||||
 | 
					> a.len:       100000 | a:                              [1, 1, 2, 3, 4, 5, 7] ... [99991, 99992, 99994, 99994, 99998, 99998, 99999] 
 | 
				
			||||||
 | 
					SPENT   24.082 ms in aswcc 100000 random
 | 
				
			||||||
 | 
					> a.len:        10000 | a:            [7019, 733, 7844, 97, 1994, 2517, 8308] ... [1293, 4423, 8853, 6021, 9549, 4161, 3700]        
 | 
				
			||||||
 | 
					> a.len:        10000 | a:                              [1, 1, 2, 2, 2, 3, 3] ... [9992, 9992, 9994, 9995, 9998, 9998, 9999]        
 | 
				
			||||||
 | 
					SPENT    1.861 ms in aswcc 10000 random
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                [863, 875, 274, 733, 794, 496, 494] ... [530, 615, 371, 561, 800, 501, 585]               
 | 
				
			||||||
 | 
					> a.len:         1000 | a:                              [2, 3, 4, 4, 5, 6, 6] ... [994, 994, 994, 994, 996, 997, 998]               
 | 
				
			||||||
 | 
					SPENT    0.150 ms in aswcc 1000 random
 | 
				
			||||||
 | 
					> a.len:          100 | a:                        [95, 18, 58, 26, 6, 48, 67] ... [11, 80, 16, 60, 58, 71, 1]                       
 | 
				
			||||||
 | 
					> a.len:          100 | a:                              [1, 3, 4, 5, 5, 6, 6] ... [94, 95, 95, 97, 97, 98, 99]                      
 | 
				
			||||||
 | 
					SPENT    0.016 ms in aswcc 100 random
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [4, 6, 3, 8, 1, 4, 7] ... [8, 1, 4, 7, 5, 8, 4]                             
 | 
				
			||||||
 | 
					> a.len:           10 | a:                              [1, 3, 4, 4, 4, 5, 6] ... [4, 4, 5, 6, 7, 8, 8]                             
 | 
				
			||||||
 | 
					SPENT    0.005 ms in aswcc 10 random
 | 
				
			||||||
 | 
					--------------------------------
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					module main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This program compares the performance of the native C.qsort function,
 | 
				
			||||||
 | 
					// used by the a.sort/0 method, vs the more flexible and platform independent
 | 
				
			||||||
 | 
					// (at the cost of being slightly slower) C.vqsort_r (adapted from musl),
 | 
				
			||||||
 | 
					// used by the a.sort_with_compare_context/2 method.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Usage:
 | 
				
			||||||
 | 
					// ./v -prod -cc gcc cmd/tools/bench/sorting.v
 | 
				
			||||||
 | 
					// for seqkind in increasing decreasing random; do
 | 
				
			||||||
 | 
					//   for how in qsort aswcc; do
 | 
				
			||||||
 | 
					//     for x in 10_000_000 1000_000 100_000 10_000 1000 100 10 ; do
 | 
				
			||||||
 | 
					//       ./cmd/tools/bench/sorting $how $x $seqkind;
 | 
				
			||||||
 | 
					//     done;
 | 
				
			||||||
 | 
					//   done;
 | 
				
			||||||
 | 
					//   echo --------------------------------;
 | 
				
			||||||
 | 
					// done > cmd/tools/bench/sorting.results.txt
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import rand
 | 
				
			||||||
 | 
					import benchmark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn my_context_compare_ints(const_a &int, const_b &int, context voidptr) int {
 | 
				
			||||||
 | 
						res := *const_a - *const_b
 | 
				
			||||||
 | 
						if res < 0 {
 | 
				
			||||||
 | 
							return -1
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if res > 0 {
 | 
				
			||||||
 | 
							return 1
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn generate(kind string, mut a []int, maxn int) {
 | 
				
			||||||
 | 
						match kind {
 | 
				
			||||||
 | 
							'random' {
 | 
				
			||||||
 | 
								for _ in 0 .. maxn {
 | 
				
			||||||
 | 
									a << rand.int_in_range(1, maxn) or { 0 }
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							'increasing' {
 | 
				
			||||||
 | 
								for idx in 0 .. maxn {
 | 
				
			||||||
 | 
									a << idx + 1
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							'decreasing' {
 | 
				
			||||||
 | 
								for idx in 1 .. maxn {
 | 
				
			||||||
 | 
									a << maxn - idx
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else {}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn sort(how string, mut a []int) {
 | 
				
			||||||
 | 
						match how {
 | 
				
			||||||
 | 
							'aswcc' {
 | 
				
			||||||
 | 
								a.sort_with_compare_context(my_context_compare_ints, voidptr(3))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							'qsort' {
 | 
				
			||||||
 | 
								a.sort()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else {}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
						rand.seed([u32(0), 1])
 | 
				
			||||||
 | 
						how := os.args[1] or { 'qsort' }
 | 
				
			||||||
 | 
						maxn := os.args[2] or { '1000' }.int()
 | 
				
			||||||
 | 
						kind := os.args[3] or { 'random' }
 | 
				
			||||||
 | 
						// println('> how: $how | maxn: $maxn')
 | 
				
			||||||
 | 
						mut a := []int{cap: maxn}
 | 
				
			||||||
 | 
						generate(kind, mut a, maxn)
 | 
				
			||||||
 | 
						println('> a.len: ${a.len:12} | a: ${a#[0..7]:50} ... ${a#[-7..]:-50}')
 | 
				
			||||||
 | 
						mut b := benchmark.start()
 | 
				
			||||||
 | 
						sort(how, mut a)
 | 
				
			||||||
 | 
						println('> a.len: ${a.len:12} | a: ${a#[0..7]:50} ... ${a#[-7..]:-50}')
 | 
				
			||||||
 | 
						b.measure('$how $maxn $kind')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue