Find Benchmark

by Derek Gathright

HTML

<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>
</html>

CoffeeScript

suite = new Benchmark.Suite;

data = []
for i in [0...10000] by 1
    data.push value: i % 2

suite.add 'Array::filter', ->
    filtered = data.filter ({value}) -> value
    return filtered

suite.add '_.find', ->
    filtered = _.find data, {value: true}
    return filtered

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

suite.add 'Optimized for loop', ->
    out = new Array data.length
    out[index] = data[index].value for index in [0...data.length] by 1 when data[index].value
    return 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