Script Preparation code:
x
 
var n = 1000000
var arr = new Array(n)
for(var i = 0; i < n; i++){
  arr[i] = i
}
class Observer {
    constructor() {
        this.value = 0
        this.completed = false
    }
    next (val) {
        this.value+=val
    }
    complete () {
        this.completed = true
    }
}
class FromDirect {
  constructor (arr) {
    this.array = arr
  }
  sum (observer) {
    for (var i = 0; i < this.array.length; ++i) {
      observer.next(this.array[i])
    }
    observer.complete()
  }
}
class FromLater {
  constructor (arr) {
    this.array = arr
  }
  sum (observer) {
    for (var i = 0; i < this.array.length; ++i) {
      observer.next(this.array[i])
    }
    end()
    function end () {
      observer.complete()
    }
  }
}
var Ob0 = new Observer()
var Ob1 = new Observer()
Tests:
  • Direct Call

     
    var t0 = new FromDirect(arr)
    t0.sum(Ob0)
  • Later Call

     
    var t1 = new FromLater(arr)
    t1.sum(Ob1)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Direct Call
    Later Call

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
Chrome 53 on Mac OS X 10.11.6
View result in a separate tab
Test name Executions per second
Direct Call 222.3 Ops/sec
Later Call 211.6 Ops/sec