| Index: test/js-perf-test/StringIterators/string-iterator.js
|
| diff --git a/test/js-perf-test/StringIterators/string-iterator.js b/test/js-perf-test/StringIterators/string-iterator.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c55925415b2e0be6a1c72adce702db05cbaaa796
|
| --- /dev/null
|
| +++ b/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);
|
| +}
|
|
|