diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/StringIterators/string-iterator.js')
-rw-r--r-- | deps/v8/test/js-perf-test/StringIterators/string-iterator.js | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/StringIterators/string-iterator.js b/deps/v8/test/js-perf-test/StringIterators/string-iterator.js new file mode 100644 index 0000000000..c55925415b --- /dev/null +++ b/deps/v8/test/js-perf-test/StringIterators/string-iterator.js @@ -0,0 +1,239 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function assert(expression, message) { + if (typeof expression === "string" && message === void 0) { + message = expression; + expression = eval(expression); + } + + if (!expression) { + var lines = ["Benchmark Error"]; + if (message !== void 0) { + lines = ["Benchmark Error:", String(message)]; + } + throw new Error(lines.join("\n")); + } + return true; +} + +assert.same = function(expected, actual, message) { + var isSame = + expected === actual || typeof expected !== expected && actual !== actual; + if (!isSame) { + var details = `Expected: ${String(expected)}\n` + + `But found: ${String(actual)}`; + var lines = ["Benchmark Error:", details]; + if (message !== void 0) { + lines = ["Benchmark Error:", details, "", String(message)]; + } + throw new Error(lines.join("\n")); + } + return true; +} + +new BenchmarkSuite('Spread_OneByteShort', [1000], [ + new Benchmark('test', false, false, 0, + Spread_OneByteShort, Spread_OneByteShortSetup, + Spread_OneByteShortTearDown), +]); + +var result; +var string; +function Spread_OneByteShortSetup() { + result = undefined; + string = "Alphabet-Soup"; +} + +function Spread_OneByteShort() { + result = [...string]; +} + +function Spread_OneByteShortTearDown() { + var expected = "A|l|p|h|a|b|e|t|-|S|o|u|p"; + return assert("Array.isArray(result)") + && assert.same(expected, result.join("|")); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('Spread_TwoByteShort', [1000], [ + new Benchmark('test', false, false, 0, + Spread_TwoByteShort, Spread_TwoByteShortSetup, + Spread_TwoByteShortTearDown), +]); + +function Spread_TwoByteShortSetup() { + result = undefined; + string = "\u5FCD\u8005\u306E\u653B\u6483"; +} + +function Spread_TwoByteShort() { + result = [...string]; +} + +function Spread_TwoByteShortTearDown() { + var expected = "\u5FCD|\u8005|\u306E|\u653B|\u6483"; + return assert("Array.isArray(result)") + && assert.same(expected, result.join("|")); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('Spread_WithSurrogatePairsShort', [1000], [ + new Benchmark('test', false, false, 0, + Spread_WithSurrogatePairsShort, + Spread_WithSurrogatePairsShortSetup, + Spread_WithSurrogatePairsShortTearDown), +]); + +function Spread_WithSurrogatePairsShortSetup() { + result = undefined; + string = "\uD83C\uDF1F\u5FCD\u8005\u306E\u653B\u6483\uD83C\uDF1F"; +} + +function Spread_WithSurrogatePairsShort() { + result = [...string]; +} + +function Spread_WithSurrogatePairsShortTearDown() { + var expected = + "\uD83C\uDF1F|\u5FCD|\u8005|\u306E|\u653B|\u6483|\uD83C\uDF1F"; + return assert("Array.isArray(result)") + && assert.same(expected, result.join("|")); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_OneByteShort', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_OneByteShort, ForOf_OneByteShortSetup, + ForOf_OneByteShortTearDown), +]); + +function ForOf_OneByteShortSetup() { + result = undefined; + string = "Alphabet-Soup"; +} + +function ForOf_OneByteShort() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_OneByteShortTearDown() { + return assert.same(string, result); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_TwoByteShort', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_TwoByteShort, ForOf_TwoByteShortSetup, + ForOf_TwoByteShortTearDown), +]); + +function ForOf_TwoByteShortSetup() { + result = undefined; + string = "\u5FCD\u8005\u306E\u653B\u6483"; +} + +function ForOf_TwoByteShort() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_TwoByteShortTearDown() { + return assert.same(string, result); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_WithSurrogatePairsShort', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_WithSurrogatePairsShort, + ForOf_WithSurrogatePairsShortSetup, + ForOf_WithSurrogatePairsShortTearDown), +]); + +function ForOf_WithSurrogatePairsShortSetup() { + result = undefined; + string = "\uD83C\uDF1F\u5FCD\u8005\u306E\u653B\u6483\uD83C\uDF1F"; +} + +function ForOf_WithSurrogatePairsShort() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_WithSurrogatePairsShortTearDown() { + return assert.same(string, result); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_OneByteLong', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_OneByteLong, ForOf_OneByteLongSetup, + ForOf_OneByteLongTearDown), +]); + +function ForOf_OneByteLongSetup() { + result = undefined; + string = "Alphabet-Soup|".repeat(128); +} + +function ForOf_OneByteLong() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_OneByteLongTearDown() { + return assert.same(string, result); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_TwoByteLong', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_OneByteLong, ForOf_OneByteLongSetup, + ForOf_OneByteLongTearDown), +]); + +function ForOf_TwoByteLongSetup() { + result = undefined; + string = "\u5FCD\u8005\u306E\u653B\u6483".repeat(128); +} + +function ForOf_TwoByteLong() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_TwoByteLongTearDown() { + return assert.same(string, result); +} + +// ---------------------------------------------------------------------------- + +new BenchmarkSuite('ForOf_WithSurrogatePairsLong', [1000], [ + new Benchmark('test', false, false, 0, + ForOf_WithSurrogatePairsLong, ForOf_WithSurrogatePairsLongSetup, + ForOf_WithSurrogatePairsLongTearDown), +]); + +function ForOf_WithSurrogatePairsLongSetup() { + result = undefined; + string = "\uD83C\uDF1F\u5FCD\u8005\u306E\u653B\u6483\uD83C\uDF1F|" + .repeat(128); +} + +function ForOf_WithSurrogatePairsLong() { + result = ""; + for (var c of string) result += c; +} + +function ForOf_WithSurrogatePairsLongTearDown() { + return assert.same(string, result); +} |