<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
var n2 = 100;
var n3 = 1000;
var n4 = 10000;
var n4_5 = 50000;
var array2 = [];
var array3 = [];
var array4 = [];
var array4_5 = [];
for(let i = n2; i > 0; i--) {
array2.push((i * 7) % n2);
}
for(let i = n3; i > 0; i--) {
array3.push((i * 7) % n3);
}
for(let i = n4; i > 0; i--) {
array4.push((i * 7) % n4);
}
for(let i = n4_5; i > 0; i--) {
array4_5.push((i * 7) % n4_5);
}
function sortArrayLodash(array) {
_.sortBy(array, function (n) { return n });
}
function sortArrayJS(array) {
array.sort(function(a, b) {
return a - b;
});
}
sortArrayJS(array2);
sortArrayJS(array3);
sortArrayJS(array4);
sortArrayJS(array4_5);
sortArrayLodash(array2);
sortArrayLodash(array3);
sortArrayLodash(array4);
sortArrayLodash(array4_5);
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
sort array JS n = 100 | |
sort array JS n = 1000 | |
sort array JS n = 10000 | |
sort array JS n = 50000 | |
sort array lodash n = 100 | |
sort array lodash n = 1000 | |
sort array lodash n = 10000 | |
sort array lodash n = 50000 |
Test name | Executions per second |
---|---|
sort array JS n = 100 | 600668.8 Ops/sec |
sort array JS n = 1000 | 71545.8 Ops/sec |
sort array JS n = 10000 | 7313.1 Ops/sec |
sort array JS n = 50000 | 1343.8 Ops/sec |
sort array lodash n = 100 | 215031.5 Ops/sec |
sort array lodash n = 1000 | 25060.6 Ops/sec |
sort array lodash n = 10000 | 2454.4 Ops/sec |
sort array lodash n = 50000 | 368.7 Ops/sec |
Let's dive into the world of JavaScript microbenchmarks!
The provided JSON represents two benchmark definitions:
Script Preparation Code: This section initializes several arrays with a specific number of elements, which will be used for sorting.
var n2 = 100;
var n3 = 1000;
var n4 = 10000;
var n4_5 = 50000;
var array2 = [];
var array3 = [];
var array4 = [];
var array4_5 = [];
for (let i = n2; i > 0; i--) {
array2.push((i * 7) % n2);
}
for (let i = n3; i > 0; i--) {
array3.push((i * 7) % n3);
}
for (let i = n4; i > 0; i--) {
array4.push((i * 7) % n4);
}
for (let i = n4_5; i > 0; i--) {
array4_5.push((i * 7) % n4_5);
}
Html Preparation Code:
This section includes the Lodash library, which will be used for sorting with the sortBy
function.
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
The individual test cases compare two approaches:
sortArrayJS
)sort
method of arrays.a
and b
, as arguments and returns a value that determines their order in the sorted array (in this case, always returns 0 for equal values).sortBy
)sortBy
function from Lodash to sort the arrays.Now, let's discuss the results:
Benchmark Results:
The benchmark results show the number of executions per second for each test case. These values indicate how fast each approach can sort an array with a specific size (10, 1000, or 50000).
Here are some observations and insights based on these results:
sortArrayJS
)array2
), native JavaScript has a slight advantage over Lodash. However, for larger arrays (e.g., array4_5
), Lodash outperforms native JavaScript by a significant margin (up to 40x faster!).sortBy
)In general, when sorting small arrays with simple comparison functions, native JavaScript might be a better choice due to its speed. However, when working with larger datasets or complex comparison logic, libraries like Lodash can provide a convenient and efficient solution.
Keep in mind that these results are specific to this particular benchmark and may vary depending on the specific requirements of your project.