summaryrefslogtreecommitdiff
path: root/benchmark/buffers/buffer-indexof.js
diff options
context:
space:
mode:
authorKarl Skomski <karl@skomski.com>2015-09-03 10:10:30 +0200
committerJames M Snell <jasnell@gmail.com>2015-10-07 21:09:53 -0700
commita18dd7b7882ca955075ad977a5e7838c792bb76f (patch)
tree29b747e1919cec49963ba6a55c55ca7607eda5b9 /benchmark/buffers/buffer-indexof.js
parentaeee956ac73de7af914b747926168714fe4d1c4c (diff)
downloadnode-new-a18dd7b7882ca955075ad977a5e7838c792bb76f.tar.gz
src: replace naive search in Buffer::IndexOf
Adds the string search implementation from v8 which uses naive search if pattern length < 8 or to a specific badness then uses Boyer-Moore-Horspool Added benchmark shows the expected improvements Added option to use ucs2 encoding with Buffer::IndexOf Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trevor Norris <trev.norris@gmail.com> PR-URL: https://github.com/nodejs/node/pull/2539
Diffstat (limited to 'benchmark/buffers/buffer-indexof.js')
-rw-r--r--benchmark/buffers/buffer-indexof.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/benchmark/buffers/buffer-indexof.js b/benchmark/buffers/buffer-indexof.js
new file mode 100644
index 0000000000..c575f54b6a
--- /dev/null
+++ b/benchmark/buffers/buffer-indexof.js
@@ -0,0 +1,38 @@
+var common = require('../common.js');
+var fs = require('fs');
+
+var bench = common.createBenchmark(main, {
+ search: ['@', 'SQ', '10x', '--l', 'Alice', 'Gryphon', 'Panther',
+ 'Ou est ma chatte?', 'found it very', 'among mad people',
+ 'neighbouring pool', 'Soo--oop', 'aaaaaaaaaaaaaaaaa',
+ 'venture to go near the house till she had brought herself down to',
+ '</i> to the Caterpillar'],
+ encoding: ['undefined', 'utf8', 'ucs2', 'binary'],
+ type: ['buffer', 'string'],
+ iter: [1]
+});
+
+function main(conf) {
+ var iter = (conf.iter) * 100000;
+ var aliceBuffer = fs.readFileSync(__dirname + '/../fixtures/alice.html');
+ var search = conf.search;
+ var encoding = conf.encoding;
+
+ if (encoding === 'undefined') {
+ encoding = undefined;
+ }
+
+ if (encoding === 'ucs2') {
+ aliceBuffer = new Buffer(aliceBuffer.toString(), encoding);
+ }
+
+ if (conf.type === 'buffer') {
+ search = new Buffer(new Buffer(search).toString(), encoding);
+ }
+
+ bench.start();
+ for (var i = 0; i < iter; i++) {
+ aliceBuffer.indexOf(search, 0, encoding);
+ }
+ bench.end(iter);
+}