Skip to content

Commit

Permalink
chore(benchmarks): move benchmarks to individual files
Browse files Browse the repository at this point in the history
  • Loading branch information
tusharmath committed Nov 5, 2016
1 parent 0d43dd3 commit 85561bc
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 51 deletions.
21 changes: 21 additions & 0 deletions benchmarks/bm.fromArray-map-reduce.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* Created by tushar.mathur on 05/11/16.
*/


import {fromArray} from '../src/sources/FromArray'
import {filter} from '../src/operators/Filter'
import {map} from '../src/operators/Map'
import {reduce} from '../src/operators/Reduce'
import {Suite} from 'benchmark'
import {run, sum, add1, even, array, onCycle} from './lib'

const a = array(1e6)
export function fromArray_map_reduce () {
const suite = new Suite()
suite.add(
'file -> map -> reduce',
(d: any) => run(reduce(sum, 0, map(add1, filter(even, fromArray(a)))), d),
{defer: true}
).on('cycle', onCycle).run()
}
20 changes: 20 additions & 0 deletions benchmarks/bm.fromArray-scan-reduce.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**
* Created by tushar.mathur on 05/11/16.
*/


import {IDefered, run, passthrough, sum, onCycle, array} from './lib'
import {reduce} from '../src/operators/Reduce'
import {scan} from '../src/operators/Scan'
import {fromArray} from '../src/sources/FromArray'
import {Suite} from 'benchmark'

const a = array(1e6)
export function fromArray_scan_reduce () {
const suite = new Suite()
suite.add(
'file -> scan -> reduce',
(d: IDefered) => run(reduce(passthrough, 0, scan(sum, 0, fromArray(a))), d),
{defer: true}
).on('cycle', onCycle).run()
}
18 changes: 18 additions & 0 deletions benchmarks/bm.fromArray-takeN.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* Created by tushar.mathur on 05/11/16.
*/

import {Suite} from 'benchmark'
import {fromArray} from '../src/sources/FromArray'
import {IDefered, run, array, onCycle} from './lib'
import {slice} from '../src/operators/Slice'

const a = array(1e6)
export function fromArray_takeN () {
const suite = new Suite()
suite.add('file -> takeN(0, n/10)',
(d: IDefered) =>
run(slice(0, 1e6 / 10, fromArray(a)), d),
{defer: true}
).on('cycle', onCycle).run()
}
41 changes: 41 additions & 0 deletions benchmarks/lib.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/**
* Created by tushar.mathur on 05/11/16.
*/


import {IObservable} from '../src/types/core/IObservable'
import {Observer} from '../src/lib/Observer'
import {DefaultScheduler} from '../src/scheduling/DefaultScheduler'

export interface IDefered {
resolve (): void
}
export function add1 (x: number) {
return x + 1
}
export function even (e: number) {
return e % 2 === 0
}
export function sum (a: number, b: number) {
return a + b
}

export function passthrough (z: any, x: any) {
return x
}

export const scheduler = new DefaultScheduler()

export function run (observable: IObservable<any>, d: IDefered) {
observable.subscribe(Observer.of(undefined, undefined, () => d.resolve()), scheduler)
}

export function array (n: number) {
const a = new Array(n)
for (var i = 0; i < a.length; ++i) {
a[i] = i
}
return a
}

export const onCycle = (event: any) => console.log(String(event.target))
61 changes: 11 additions & 50 deletions benchmarks/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,16 @@
*/


import {Suite} from 'benchmark'
import {Observer} from '../src/lib/Observer'
import {reduce} from '../src/operators/Reduce'
import {map} from '../src/operators/Map'
import {filter} from '../src/operators/Filter'
import {fromArray} from '../src/sources/FromArray'
import {slice} from '../src/operators/Slice'
import {scan} from '../src/operators/Scan'
import {IObservable} from '../src/types/core/IObservable'
import {DefaultScheduler} from '../src/scheduling/DefaultScheduler'
import {fromArray_map_reduce} from './bm.fromArray-map-reduce'
import {fromArray_scan_reduce} from './bm.fromArray-scan-reduce'
import {fromArray_takeN} from './bm.fromArray-takeN'

// Run All Benchmarks

function add1 (x: number) {
return x + 1
}
function even (e: number) {
return e % 2 === 0
}
function sum (a: number, b: number) {
return a + b
}
function passthrough (z: any, x: any) {
return x
}
const n = 1e6
const a = new Array(n)
for (var i = 0; i < a.length; ++i) {
a[i] = i
}
const suite = new Suite('filter -> map -> reduce ' + n + ' integers')
const scheduler = new DefaultScheduler()
function run (observable: IObservable<any>, d: any) {
observable.subscribe(Observer.of(undefined, undefined, () => d.resolve()), scheduler)
}
const options = {defer: true}
suite
.add('file -> map -> reduce',
(d: any) =>
run(reduce(sum, 0, map(add1, filter(even, fromArray(a)))), d),
options
)
.add('file -> takeN(0, n/10)',
(d: any) =>
run(slice(0, n / 10, fromArray(a)), d),
options
)
.add('file -> scan -> reduce',
(d: any) =>
run(reduce(passthrough, 0, scan(sum, 0, fromArray(a))), d),
options
)
.on('cycle', (event: any) => console.log(String(event.target))).run()
console.log('Node:', process.version)
console.log('V8: ', process.versions.v8)
console.log('----------------')

fromArray_map_reduce()
fromArray_scan_reduce()
fromArray_takeN()
3 changes: 2 additions & 1 deletion typings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"globalDependencies": {
"benchmark": "registry:dt/benchmark#1.0.0+20160317120654"
"benchmark": "registry:dt/benchmark#1.0.0+20160317120654",
"node": "registry:dt/node#6.0.0+20161019125345"
}
}

0 comments on commit 85561bc

Please sign in to comment.