123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import * as B from 'benchmark';
- import { Column as C } from '../mol-data/db';
- export namespace Column {
- function createData(n: number) {
- const ret = new Float32Array(n);
- for (let i = 0; i < n; i++) {
- ret[i] = i * i + 1;
- }
- return ret;
- }
- function raw(xs: ArrayLike<number>) {
- let sum = 0;
- for (let i = 0, _i = xs.length; i < _i; i++) {
- sum += xs[i];
- }
- return sum;
- }
- function column(col: C<number>) {
- let sum = 0;
- for (let i = 0, _i = col.rowCount; i < _i; i++) {
- sum += col.value(i);
- }
- return sum;
- }
- function column1(col: C<number>) {
- let sum = 0;
- for (let i = 0, _i = col.rowCount; i < _i; i++) {
- sum += col.value(i);
- }
- return sum;
- }
- function val(i: number) { return i * i + 1; }
- export function runMono() {
- const suite = new B.Suite();
- const data = createData(1000);
- const nativeData = [...data as any];
- const col = C.ofArray({ array: data, schema: C.Schema.float });
- const lambda = C.ofLambda({ value: val, rowCount: data.length, schema: C.Schema.float });
- const cnst = C.ofConst(10, data.length, C.Schema.float);
- suite
- .add('raw', () => raw(data))
- .add('native raw', () => raw(nativeData))
- .add('arraycol', () => column(col))
- .add('arraycol1', () => column(col))
- .add('const', () => column1(cnst))
- .add('arraycol2', () => column(col))
- .add('lambda', () => column1(lambda))
- .on('cycle', (e: any) => console.log(String(e.target)))
- .run();
- }
- export function runPoly() {
- const suite = new B.Suite();
- const data = createData(10000);
- const nativeData = [...data as any];
- const col = C.ofArray({ array: data, schema: C.Schema.float });
- const lambda = C.ofLambda({ value: val, rowCount: data.length, schema: C.Schema.float });
- const cnst = C.ofConst(10, data.length, C.Schema.float);
- suite
- .add('raw', () => raw(data))
- .add('native raw', () => raw(nativeData))
- .add('arraycol', () => column(col))
- .add('const', () => column(cnst))
- .add('arraycol2', () => column(col))
- .add('lambda', () => column(lambda))
- .on('cycle', (e: any) => console.log(String(e.target)))
- .run();
- }
- }
- Column.runMono();
- Column.runPoly();
|