jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
Moves the function definitions out of the running tests.
(Also removing wu, which seems to be breaking.)
<script src="https://rawgit.com/jlongster/transducers.js/master/dist/transducers.js"></script>
<script src="https://rawgit.com/nullobject/fkit/master/dist/fkit.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/traceur-runtime.js"></script>
<script src="//cdn.rawgit.com/suckgamony/fromjs/999e2b611d72e28a997b304f18ee844b93759f54/from.src.js"></script>
<script src="//cdn.rawgit.com/dtao/lazy.js/7a9b0210d97168ff48c5d2b4ce4d12194ba7fbec/lazy.js"></script>
<script src="//cdn.rawgit.com/CrossEye/ramda/v0.5.0/ramda.js"></script>
<script src="//cdn.rawgit.com/mihaifm/linq/9c337383e60be3a5560959616bbca51b3eb0d27d/linq.js"></script>
<script src="//cdn.rawgit.com/lodash/lodash/ad10a1eba55e9530a09827549f56d2886a900b7f/lodash.js"></script>
<script src="//cdn.rawgit.com/megawac/ramdash/f4fb017325fea763e50933801b39b586548fbe91/ramda.js"></script>
<script src="//cdn.rawgit.com/Reactive-Extensions/IxJS/es6/dist/ix.js"></script>
<script>var lodash = _.noConflict();</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script>
var arr = _.range(10000),
limit = 100;
var odd = function(v) { return !!(v % 2); },
square = function(v) { return v * v; };
var r_native = function(arr) {
return arr.map(square).filter(odd).slice(0, limit);
};
var r_underscore = function(arr) {
return _(arr).chain().map(square).filter(odd).take(limit).value();
};
var r_Ix = function(arr) {
return Ix.Enumerable.from(arr).map(square).filter(odd).take(limit).toArray();
};
var r_Lazy = function(arr) {
return Lazy(arr).map(square).filter(odd).take(limit).toArray();
};
var r_lodash = function(arr) {
return lodash(arr).map(square).filter(odd).take(limit).value();
};
var r_LinqJS = function(arr) {
return Enumerable.from(arr).select(square).where(odd).take(limit).toArray();
};
var r_Ramda = R.compose(R.take(limit), R.filter(odd), R.map(square));
var r_from = function(arr) {
return from(arr).select(square).where(odd).take(limit).toArray();
};
var r_Ramdash = ramda.compose(ramda.take(limit), ramda.filter(odd), ramda.map(square));
var r_wu = function(arr) {
return wu(arr).map(square).filter(odd).take(limit);
};
var r_FKit = F.compose(F.take(limit), F.filter(odd), F.map(square));
var transform = transducers.compose(
transducers.map(square),
transducers.filter(odd),
transducers.take(limit)
);
var r_Transducers = function(arr) {
return transducers.seq(arr, transform);
};
Ready to run.
Test | Ops/sec | |
---|---|---|
Native |
| ready |
Underscore |
| ready |
Ix |
| ready |
Lazy |
| ready |
Lo-Dash |
| ready |
LinqJS |
| ready |
Ramda |
| ready |
from |
| ready |
Ramdash |
| ready |
Fkit |
| ready |
Transducers |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.