Skip to content

Commit 03c005e

Browse files
🚧 progress: Add code to bench and profile split and iterators.
1 parent 89f4ab0 commit 03c005e

File tree

5 files changed

+53
-17
lines changed

5 files changed

+53
-17
lines changed

_benchmark/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"bench": "node main.js"
55
},
66
"dependencies": {
7+
"@iterable-iterator/consume": "^1.0.1",
78
"@iterable-iterator/range": "^2.1.0",
89
"argparse": "^2.0.1",
910
"benchmark": "^2.1.4",

_benchmark/table.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {ArgumentParser} from 'argparse';
44
import Benchtable from 'benchtable';
55

66
import {range} from '@iterable-iterator/range';
7+
import {exhaust} from '@iterable-iterator/consume';
78

89
import {
910
FAST_COUNTER as COUNTER,
@@ -103,6 +104,16 @@ const fds_finger_tree = {
103104
for (let i = 0; i < _n; ++i) _s[i][0].concat(_s[i][1]);
104105
},
105106
},
107+
iterator: {
108+
run: () => {
109+
exhaust(at[Symbol.iterator]());
110+
},
111+
},
112+
reversed: {
113+
run: () => {
114+
exhaust(at.reversed());
115+
},
116+
},
106117
},
107118
}),
108119
};
@@ -125,6 +136,8 @@ await add(modern, fds_finger_tree, 'append');
125136
await add(modern, fds_finger_tree, 'prepend');
126137
await add(modern, fds_finger_tree, 'split');
127138
await add(modern, fds_finger_tree, 'concat');
139+
await add(modern, fds_finger_tree, 'iterator');
140+
await add(modern, fds_finger_tree, 'reversed');
128141

129142
suite.addInput(`(${measureToString(measure)}, ${n})`, []);
130143

_benchmark/yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# yarn lockfile v1
33

44

5+
"@iterable-iterator/consume@^1.0.1":
6+
version "1.0.1"
7+
resolved "https://registry.yarnpkg.com/@iterable-iterator/consume/-/consume-1.0.1.tgz#abbe00af0d48542eb8e240f698e85fd4ba9b28b0"
8+
integrity sha512-KVJufzV8/gOnYqrtO4CFdGZopJ5kkUBhzHcbU0iToOv5aTl0igxnsRzCaDSxUgO4q0mDbf9WEfjz4K39cl1iNA==
9+
510
"@iterable-iterator/range@^2.1.0":
611
version "2.1.0"
712
resolved "https://registry.yarnpkg.com/@iterable-iterator/range/-/range-2.1.0.tgz#d7cfeee165c612f460c9ea1854a250f4788f1226"

_profile/iterator.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'regenerator-runtime/runtime.js';
2+
import {ArgumentParser} from 'argparse';
3+
import {range} from '@iterable-iterator/range';
4+
import {FAST_COUNTER as COUNTER} from '../test/src/_fixtures.js';
5+
import {from} from './dist/profile/index.js';
6+
7+
console.time('prepare');
8+
9+
const parser = new ArgumentParser();
10+
parser.add_argument('M', {default: 1000, nargs: '?'});
11+
parser.add_argument('-N', {default: 1000});
12+
const args = parser.parse_args();
13+
const M = args.M;
14+
const N = args.N;
15+
16+
console.log('number of operations:', M * N);
17+
18+
const t = from(COUNTER, range(M));
19+
console.timeEnd('prepare');
20+
21+
console.time('split');
22+
for (let k = 0; k < N; ++k) {
23+
// eslint-disable-next-line no-unused-vars
24+
for (const _x of t);
25+
}
26+
27+
console.timeEnd('split');

_profile/split.js

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
1-
console.time('prepare');
2-
require('regenerator-runtime/runtime');
3-
const ArgumentParser = require('argparse').ArgumentParser;
4-
const range = require('@iterable-iterator/range').range;
5-
const empty = require('..').empty;
1+
import 'regenerator-runtime/runtime.js';
2+
import {ArgumentParser} from 'argparse';
3+
import {range} from '@iterable-iterator/range';
4+
import {FAST_COUNTER as COUNTER} from '../test/src/_fixtures.js';
5+
import {from} from './dist/profile/index.js';
66

7-
const COUNTER = {
8-
plus(a, b) {
9-
return a + b;
10-
},
11-
measure(_x) {
12-
return 1;
13-
},
14-
zero() {
15-
return 0;
16-
},
17-
};
7+
console.time('prepare');
188

199
const parser = new ArgumentParser();
2010
parser.add_argument('M', {default: 1000, nargs: '?'});
@@ -25,7 +15,7 @@ const N = args.N;
2515

2616
console.log('number of operations:', M * N);
2717

28-
const t = empty(COUNTER).append(range(M));
18+
const t = from(COUNTER, range(M));
2919
console.timeEnd('prepare');
3020

3121
console.time('split');

0 commit comments

Comments
 (0)