haikuwebkit/PerformanceTests/RexBench/about.html

45 lines
3.1 KiB
HTML
Raw Permalink Normal View History

Create a new JavaScript RegExp benchmark https://bugs.webkit.org/show_bug.cgi?id=175225 Reviewed by JF Bastien. This is a new benchmark for Regular Expressions. It borrows regex-dna from SunSpider, the regexp test from Octane2, the BASIC parser from ARES-6/Basic, and adds a new flight planner benchmark that uses RegExp's for textual parsing. There needs to be some additions and changes to some of the textual content. This includes adding more BASIC programs to the Basic test and increasing keyword usage in the Flight Planner to increase the 16-bit coverage. The intent is to grow this benchmark by adding a JavaScript implementation of the offline assembler lexer and parser as well as adding some targeted micro benchmark tests. * RexBench: Added. * RexBench/Basic: Added. * RexBench/Basic/ast.js: Added. * RexBench/Basic/basic.js: Added. * RexBench/Basic/benchmark.js: Added. * RexBench/Basic/caseless_map.js: Added. * RexBench/Basic/lexer.js: Added. * RexBench/Basic/number.js: Added. * RexBench/Basic/parser.js: Added. * RexBench/Basic/random.js: Added. * RexBench/Basic/state.js: Added. * RexBench/Basic/stress-test.js: Added. * RexBench/Basic/util.js: Added. * RexBench/FlightPlanner: Added. * RexBench/FlightPlanner/airways.js: Added. * RexBench/FlightPlanner/benchmark.js: Added. * RexBench/FlightPlanner/convert-nfdc.py: Added. * RexBench/FlightPlanner/expectations.js: Added. * RexBench/FlightPlanner/flight_planner.js: Added. * RexBench/FlightPlanner/use_unicode.js: Added. * RexBench/FlightPlanner/waypoints.js: Added. * RexBench/Octane2: Added. * RexBench/Octane2/base.js: Added. * RexBench/Octane2/regexp.js: Added. * RexBench/SunSpider: Added. * RexBench/SunSpider/regex-dna.js: Added. * RexBench/about.html: Added. * RexBench/basic_benchmark.js: Added. * RexBench/cli.js: Added. * RexBench/driver.js: Added. * RexBench/flightplan_benchmark.js: Added. * RexBench/flightplan_unicode_benchmark.js: Added. * RexBench/glue.js: Added. * RexBench/index.html: Added. * RexBench/octane2_benchmark.js: Added. * RexBench/results.js: Added. * RexBench/stats.js: Added. * RexBench/styles.css: Added. * RexBench/sunspider_benchmark.js: Added. Canonical link: https://commits.webkit.org/191963@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220307 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-08-05 00:20:23 +00:00
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
</head>
<body>
<header>
<h1 class="logo">Rex Bench</h1>
</header>
<main class="about">
<h2>About the Tests</h2>
<p>Rex Bench measures the execution time of JavaScript code with heavy use of Regular-Expressions. In an attempt to use real world examples, the general processing of strings and other JavaScript code execution plays a part in the execution time of the benchmark. A benchmark consisting of only regular expressions and text processed by those regular expressions would likely be easier to optimize for with those optimizations providing little benefit to real world code.</p>
<p>Regex DNA is a regular-expression-based solution to DNA manipulation from The Great Computer Language Shootout, contributed by Jesse Millikan. This benchmark was previously published in <a href="https://webkit.org/perf/sunspider/sunspider.html">SunSpider</a>. Source code: regex-dna.js.</p>
<p>Octane RegExp is the regular-expression benchmark test from <a href="https://developers.google.com/octane/">Octane</a>. It is a collection of regular-expressions taken from the 50 most popular web pages when Octane was written.</p>
Add Offline Assembler parsing test to RexBench https://bugs.webkit.org/show_bug.cgi?id=175581 Reviewed by Saam Barati. This is a port of the JavaScriptCore offline assmebler's lexer, parser, AST and supporting code from Ruby to JavaScript turned into a benchmark. The benchmark timing includes parsing through AST. The validation processing time is not part of the benchmark measurement. The input data is the current tip of tree LLInt .asm source files. Those file were converted to JavaScript using the python script, convert_asm_to_js.py. There is also a new JavaScript file, generate_expected.js, to create the expected output JavaScript file. * RexBench/OfflineAssembler: Added. * RexBench/OfflineAssembler/ast.js: Added. * RexBench/OfflineAssembler/instructions.js: Added. * RexBench/OfflineAssembler/parser.js: Added. * RexBench/OfflineAssembler/registers.js: Added. These are JavaScript translation of the Ruby Offline Assembler. Code not needed for the benchmark was not translated and therefore missing. * RexBench/OfflineAssembler/InitBytecodes.asm: Added. * RexBench/OfflineAssembler/InitBytecodes.js: Added. * RexBench/OfflineAssembler/LowLevelInterpreter.asm: Added. * RexBench/OfflineAssembler/LowLevelInterpreter.js: Added. * RexBench/OfflineAssembler/LowLevelInterpreter32_64.asm: Added. * RexBench/OfflineAssembler/LowLevelInterpreter32_64.js: Added. * RexBench/OfflineAssembler/LowLevelInterpreter64.asm: Added. * RexBench/OfflineAssembler/LowLevelInterpreter64.js: Added. Copies of the current LLInt source and conversion to JavaScript. * RexBench/OfflineAssembler/file.js: Added. (File): (File.open): (File.prototype.read): Mock File class used to simulate filesystem access. * RexBench/OfflineAssembler/expected.js: Added. Expected output of the AST dumped and split into individual lines. * RexBench/OfflineAssembler/benchmark.js: Added. (OfflineAssemblerBenchmark): (OfflineAssemblerBenchmark.prototype.runOnce): (OfflineAssemblerBenchmark.prototype.validate): Benchmark sub class for this test. * RexBench/OfflineAssembler/convert_asm_to_js.py: Added. (convertFile): Converts .asm into .js files compatible to the benchmark. * RexBench/OfflineAssembler/generate_expected.js: Added. Converts AST output into the expected file format. * RexBench/about.html: Added description of this sub-benchmark test. * RexBench/cli.js: * RexBench/glue.js: * RexBench/index.html: * RexBench/offline_assembler_benchmark.js: Added. Updates to add this sub-benchmark. Canonical link: https://commits.webkit.org/192263@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220752 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-08-15 20:11:57 +00:00
<p>Offline Assembler is the lexer, parser and AST layer of the offline assembler for JavaScriptCore. It has been ported to JavaScript from the original Ruby.</p>
Add a Unicode test to RexBench that matches non-BMP characters https://bugs.webkit.org/show_bug.cgi?id=175697 Reviewed by JF Bastien. Added a new sub test that simulates 5 card stud poker. This test uses the Unicode playing cards code points, U+1F0A1..U+1F0DE, as the card representation. The scoring of hands is done using three regular expressions, one to check for a flush, one to check for straights and one to check for pairs, three of a kind and four of a kind. * RexBench/UniPoker: Added. * RexBench/UniPoker/benchmark.js: Added. (UniPokerBenchmark): (UniPokerBenchmark.prototype.setup.): (UniPokerBenchmark.prototype.setup.Math.random): (UniPokerBenchmark.prototype.setup): (UniPokerBenchmark.prototype.runOnce): (UniPokerBenchmark.prototype.validate): * RexBench/UniPoker/expected.js: Added. (PlayerExpectation): (PlayerExpectation.prototype.validate): * RexBench/UniPoker/poker.js: Added. (CardDeck): (CardDeck.prototype.newDeck): (CardDeck.prototype.shuffle): (CardDeck.prototype.dealOneCard): (CardDeck.cardRank): (CardDeck.cardName): (Hand): (Hand.prototype.clear): (Hand.prototype.takeCard): (Hand.prototype.score): (Hand.prototype.get rank): (Hand.prototype.toString): (Player): (Player.prototype.scoreHand): (Player.prototype.wonHand): (Player.prototype.get name): (Player.prototype.get hand): (Player.prototype.get wins): (Player.prototype.get handTypeCounts): (playHands): * RexBench/about.html: * RexBench/cli.js: * RexBench/glue.js: (driver.reportResult): * RexBench/index.html: * RexBench/unipoker_benchmark.js: Added. Canonical link: https://commits.webkit.org/192362@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220893 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-08-18 00:56:59 +00:00
<p>UniPoker is a 5 card stud poker simulation using the Unicode playing cards code points, U+1F0A1..U+1F0DE, as the card representation in the code. Scoring of hands is done with three regular expressions, one to check for a flush, one to check for straights, and one to check for pairs, three of a kind and four of a kind. The last regular expression is used twice as needed to find hands with 2 pairs or a full house.
Create a new JavaScript RegExp benchmark https://bugs.webkit.org/show_bug.cgi?id=175225 Reviewed by JF Bastien. This is a new benchmark for Regular Expressions. It borrows regex-dna from SunSpider, the regexp test from Octane2, the BASIC parser from ARES-6/Basic, and adds a new flight planner benchmark that uses RegExp's for textual parsing. There needs to be some additions and changes to some of the textual content. This includes adding more BASIC programs to the Basic test and increasing keyword usage in the Flight Planner to increase the 16-bit coverage. The intent is to grow this benchmark by adding a JavaScript implementation of the offline assembler lexer and parser as well as adding some targeted micro benchmark tests. * RexBench: Added. * RexBench/Basic: Added. * RexBench/Basic/ast.js: Added. * RexBench/Basic/basic.js: Added. * RexBench/Basic/benchmark.js: Added. * RexBench/Basic/caseless_map.js: Added. * RexBench/Basic/lexer.js: Added. * RexBench/Basic/number.js: Added. * RexBench/Basic/parser.js: Added. * RexBench/Basic/random.js: Added. * RexBench/Basic/state.js: Added. * RexBench/Basic/stress-test.js: Added. * RexBench/Basic/util.js: Added. * RexBench/FlightPlanner: Added. * RexBench/FlightPlanner/airways.js: Added. * RexBench/FlightPlanner/benchmark.js: Added. * RexBench/FlightPlanner/convert-nfdc.py: Added. * RexBench/FlightPlanner/expectations.js: Added. * RexBench/FlightPlanner/flight_planner.js: Added. * RexBench/FlightPlanner/use_unicode.js: Added. * RexBench/FlightPlanner/waypoints.js: Added. * RexBench/Octane2: Added. * RexBench/Octane2/base.js: Added. * RexBench/Octane2/regexp.js: Added. * RexBench/SunSpider: Added. * RexBench/SunSpider/regex-dna.js: Added. * RexBench/about.html: Added. * RexBench/basic_benchmark.js: Added. * RexBench/cli.js: Added. * RexBench/driver.js: Added. * RexBench/flightplan_benchmark.js: Added. * RexBench/flightplan_unicode_benchmark.js: Added. * RexBench/glue.js: Added. * RexBench/index.html: Added. * RexBench/octane2_benchmark.js: Added. * RexBench/results.js: Added. * RexBench/stats.js: Added. * RexBench/styles.css: Added. * RexBench/sunspider_benchmark.js: Added. Canonical link: https://commits.webkit.org/191963@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220307 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-08-05 00:20:23 +00:00
<p>Flight Planner is a newly written benchmark taken from a flight management web application. Flight Planner parses aircraft flight plans and computes distance, course and elapsed times for legs of flight plans as well as total time. It uses FAA data for airports, navigation aids and airways. The flight management app was originally written to help compete in a flying proficiency event. See <a href="http://www.hwdairrally.org/index.shtml">Hayward Air Rally</a>.
</p>
<p>Flight Planner Unicode is an adaptation of Flight Planner replacing the English keywords like takeoff and climb with Russian equivalents. It also uses the <i>/u</i> Unicode flag for most of the Regular Expressions. All of the text processed in this benchmark is made of characters from the <a href="https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane">Basic Multilingual Plane (BMP)</a>.
</p>
<p>More tests are in the works...
</p>
<p>Rex Bench is a mixture of older regular expression test along with newer benchmarks.
</p>
<p><a href="index.html" class="button return">Return to Testing</a></p>
</main>
</body>
</html>