93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var Caml = require("@rescript/std/lib/js/caml.js");
 | |
| var $$Array = require("@rescript/std/lib/js/array.js");
 | |
| var Belt_Array = require("@rescript/std/lib/js/belt_Array.js");
 | |
| var Belt_Range = require("@rescript/std/lib/js/belt_Range.js");
 | |
| var Benchmark_Helpers$QuriSquiggleLang = require("./Benchmark_Helpers.bs.js");
 | |
| 
 | |
| function beltArray(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   Belt_Range.forEach(1, 300000, (function (param) {
 | |
|           Belt_Array.map(x, (function (v) {
 | |
|                   return v;
 | |
|                 }));
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function jsArray2(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   Belt_Range.forEach(1, 300000, (function (param) {
 | |
|           x.map(function (v) {
 | |
|                 return v;
 | |
|               });
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function ocamlArray(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   Belt_Range.forEach(1, 300000, (function (param) {
 | |
|           $$Array.map((function (v) {
 | |
|                   return v;
 | |
|                 }), x);
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function runAll(param) {
 | |
|   console.log("Mapping identity function over arrays of size " + (1000).toString() + " (" + (300000).toString() + " iterations)");
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Belt.Array.map", beltArray);
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Js.Array2.map", jsArray2);
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Array.map", ocamlArray);
 | |
| }
 | |
| 
 | |
| var $$Map = {
 | |
|   runAll: runAll
 | |
| };
 | |
| 
 | |
| function jsArray2$1(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   var compare = function (a, b) {
 | |
|     if (a < b) {
 | |
|       return -1;
 | |
|     } else {
 | |
|       return 1;
 | |
|     }
 | |
|   };
 | |
|   Belt_Range.forEach(1, 30000, (function (param) {
 | |
|           x.sort(compare);
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function jsArray2withOcamlCompare(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   Belt_Range.forEach(1, 30000, (function (param) {
 | |
|           x.sort(Caml.float_compare);
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function ocamlArray$1(param) {
 | |
|   var x = Belt_Array.make(1000, 0);
 | |
|   Belt_Range.forEach(1, 30000, (function (param) {
 | |
|           $$Array.fast_sort(Caml.float_compare, x);
 | |
|         }));
 | |
| }
 | |
| 
 | |
| function runAll$1(param) {
 | |
|   console.log("Sorting arrays of size " + (1000).toString() + " (" + (30000).toString() + " iterations)");
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Js.Array2.sort", jsArray2$1);
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Js.Array2.sort with Ocaml compare", jsArray2withOcamlCompare);
 | |
|   Benchmark_Helpers$QuriSquiggleLang.measure("Array.fast_sort", ocamlArray$1);
 | |
| }
 | |
| 
 | |
| var Sort = {
 | |
|   runAll: runAll$1
 | |
| };
 | |
| 
 | |
| runAll(undefined);
 | |
| 
 | |
| runAll$1(undefined);
 | |
| 
 | |
| exports.$$Map = $$Map;
 | |
| exports.Sort = Sort;
 | |
| /*  Not a pure module */
 |