Test name | Executions per second |
---|---|
forEach | 4.5 Ops/sec |
mapFilter | 18.9 Ops/sec |
transduce | 35.7 Ops/sec |
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
var makeArr = (randomCeil) => (len) =>
Array.from({
length: len
}, (v, i) => Math.floor(Math.random() * randomCeil));
var arrOfMillion = makeArr(100)(1e6);
var tripleIt = (num) => num * 3;
var isEven = (num) => num % 2 === 0;
const result = [];
arrOfMillion.forEach((item) => {
const tripleItem = tripleIt(item);
if (isEven(tripleItem)) {
result.push(tripleItem);
}
});
const result = arrOfMillion.map(tripleIt).filter(isEven);
const transducer = R.compose(R.filter(isEven), R.map(tripleIt));
const reducer = (acc, val) => (acc.push(val), acc); // same as (acc, val) => { acc.push(val); return acc }
const result = R.transduce(transducer, reducer, [], arrOfMillion);