| // Copyright 2014 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. |
| |
| new BenchmarkSuite('StringFunctions', [1000], [ |
| new Benchmark('StringRepeat', false, false, 0, |
| Repeat, RepeatSetup, RepeatTearDown), |
| new Benchmark('StringStartsWith', false, false, 0, |
| StartsWith, WithSetup, WithTearDown), |
| new Benchmark('StringEndsWith', false, false, 0, |
| EndsWith, WithSetup, WithTearDown), |
| new Benchmark('StringIncludes', false, false, 0, |
| Includes, IncludesSetup, WithTearDown), |
| new Benchmark('StringFromCodePoint', false, false, 0, |
| FromCodePoint, FromCodePointSetup, FromCodePointTearDown), |
| new Benchmark('StringCodePointAt', false, false, 0, |
| CodePointAt, CodePointAtSetup, CodePointAtTearDown), |
| ]); |
| |
| |
| var result; |
| |
| var stringRepeatSource = "abc"; |
| |
| function RepeatSetup() { |
| result = undefined; |
| } |
| |
| function Repeat() { |
| result = stringRepeatSource.repeat(500); |
| } |
| |
| function RepeatTearDown() { |
| var expected = ""; |
| for(var i = 0; i < 1000; i++) { |
| expected += stringRepeatSource; |
| } |
| return result === expected; |
| } |
| |
| |
| var str; |
| var substr; |
| |
| function WithSetup() { |
| str = "abc".repeat(500); |
| substr = "abc".repeat(200); |
| result = undefined; |
| } |
| |
| function WithTearDown() { |
| return !!result; |
| } |
| |
| function StartsWith() { |
| result = str.startsWith(substr); |
| } |
| |
| function EndsWith() { |
| result = str.endsWith(substr); |
| } |
| |
| function IncludesSetup() { |
| str = "def".repeat(100) + "abc".repeat(100) + "qqq".repeat(100); |
| substr = "abc".repeat(100); |
| } |
| |
| function Includes() { |
| result = str.includes(substr); |
| } |
| |
| var MAX_CODE_POINT = 0xFFFFF; |
| |
| function FromCodePointSetup() { |
| result = new Array(MAX_CODE_POINT + 1); |
| } |
| |
| function FromCodePoint() { |
| for (var i = 0; i <= MAX_CODE_POINT; i++) { |
| result[i] = String.fromCodePoint(i); |
| } |
| } |
| |
| function FromCodePointTearDown() { |
| for (var i = 0; i <= MAX_CODE_POINT; i++) { |
| if (i !== result[i].codePointAt(0)) return false; |
| } |
| return true; |
| } |
| |
| |
| var allCodePoints; |
| |
| function CodePointAtSetup() { |
| allCodePoints = new Array(MAX_CODE_POINT + 1); |
| for (var i = 0; i <= MAX_CODE_POINT; i++) { |
| allCodePoints = String.fromCodePoint(i); |
| } |
| result = undefined; |
| } |
| |
| function CodePointAt() { |
| result = 0; |
| for (var i = 0; i <= MAX_CODE_POINT; i++) { |
| result += allCodePoints.codePointAt(i); |
| } |
| } |
| |
| function CodePointAtTearDown() { |
| return result === MAX_CODE_POINT * (MAX_CODE_POINT + 1) / 2; |
| } |