Map Benchmark

by Derek Gathright

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.2/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/2.1.0/benchmark.js"></script>

CoffeeScript

suite = new Benchmark.Suite;

data = []
for i in [0...10000] by 1
    data.push value: 'foo'

suite.add 'Array::map', ->
    out = data.map (obj) -> obj.value
    out

suite.add '_.map', ->
    out = _.map data, (obj) -> obj.value
    out

suite.add 'For loop', ->
    out = []
    out.push(obj.value) for obj in data
    out

suite.add 'Optimized for loop', ->
    out = new Array data.length
    out[index] = data[index].value for index in [0...data.length] by 1
    out

suite.on 'cycle', (event) -> console.log(String(event.target));
suite.on 'complete', -> console.log('Fastest is ' + this.filter('fastest').map('name'));
suite.run async:true