@@ -2,11 +2,19 @@ import * as A from "../array.ts";
22import * as N from "../number.ts" ;
33import { pipe } from "../fn.ts" ;
44
5- const count = 100_000 ;
5+ const count = 1_000_000 ;
66const sorted = A . range ( count ) ;
77const binarySearch = A . binarySearch ( N . SortableNumber ) ;
88const monoSearch = A . monoSearch ( N . SortableNumber ) ;
99const searches = pipe ( A . range ( count ) , A . map ( ( ) => Math . random ( ) * count ) ) ;
10+ const expensiveOperation = ( n : number ) =>
11+ ( ( n ** Math . floor ( n ) ) / ( n ** ( Math . floor ( n ) - 1 ) ) ) +
12+ ( ( n ** Math . floor ( n - 2 ) ) / ( n ** Math . floor ( n - 3 ) ) ) ;
13+ const reducer = ( acc : number , value : number ) => acc + expensiveOperation ( value ) ;
14+
15+ Deno . bench ( "array native findIndex" , { group : "binarySearch" } , ( ) => {
16+ searches . forEach ( ( value ) => sorted . findIndex ( ( n ) => n <= value ) ) ;
17+ } ) ;
1018
1119Deno . bench ( "array binarySearch" , { group : "binarySearch" } , ( ) => {
1220 searches . forEach ( ( value ) => binarySearch ( value , sorted ) ) ;
@@ -15,3 +23,19 @@ Deno.bench("array binarySearch", { group: "binarySearch" }, () => {
1523Deno . bench ( "array monoSearch" , { group : "binarySearch" } , ( ) => {
1624 searches . forEach ( ( value ) => monoSearch ( value , sorted ) ) ;
1725} ) ;
26+
27+ Deno . bench ( "array map" , { group : "map" } , ( ) => {
28+ pipe ( searches , A . map ( expensiveOperation ) ) ;
29+ } ) ;
30+
31+ Deno . bench ( "array native map" , { group : "map" } , ( ) => {
32+ searches . map ( expensiveOperation ) ;
33+ } ) ;
34+
35+ Deno . bench ( "array fold" , { group : "fold" } , ( ) => {
36+ pipe ( searches , A . fold ( reducer , 0 ) ) ;
37+ } ) ;
38+
39+ Deno . bench ( "array native reduce" , { group : "fold" } , ( ) => {
40+ searches . reduce ( reducer , 0 ) ;
41+ } ) ;
0 commit comments