Browse Source

Merge pull request #388 from svaarala/add-luajit-nodejs-perf

Add LuaJIT and Node.js (V8) performance comparisons
pull/395/head
Sami Vaarala 9 years ago
parent
commit
b8a33a0756
  1. 41
      Makefile
  2. 2
      tests/perf/test-add-fastint.js
  3. 2
      tests/perf/test-add-float.js
  4. 3
      tests/perf/test-add-nan-fastint.js
  5. 3
      tests/perf/test-add-nan.js
  6. 2
      tests/perf/test-array-read.js
  7. 2
      tests/perf/test-array-write.js
  8. 2
      tests/perf/test-assign-add.js
  9. 3
      tests/perf/test-assign-addto-nan.js
  10. 2
      tests/perf/test-assign-addto.js
  11. 2
      tests/perf/test-assign-const-int.js
  12. 2
      tests/perf/test-assign-const.js
  13. 2
      tests/perf/test-assign-literal.js
  14. 2
      tests/perf/test-assign-reg.js
  15. 2
      tests/perf/test-bitwise-ops.js
  16. 2
      tests/perf/test-break-fast.js
  17. 2
      tests/perf/test-break-slow.js
  18. 2
      tests/perf/test-buffer-nodejs-read.js
  19. 2
      tests/perf/test-buffer-nodejs-write.js
  20. 2
      tests/perf/test-buffer-object-read.js
  21. 2
      tests/perf/test-buffer-object-write.js
  22. 2
      tests/perf/test-buffer-plain-read.js
  23. 2
      tests/perf/test-buffer-plain-write.js
  24. 2
      tests/perf/test-call-basic.js
  25. 2
      tests/perf/test-call-native.js
  26. 2
      tests/perf/test-compile-mandel-nofrac.js
  27. 2
      tests/perf/test-compile-mandel.js
  28. 2
      tests/perf/test-compile-short.js
  29. 2
      tests/perf/test-continue-fast.js
  30. 2
      tests/perf/test-continue-slow.js
  31. 2
      tests/perf/test-empty-loop.js
  32. 2
      tests/perf/test-fib.js
  33. 2
      tests/perf/test-global-lookup.js
  34. 2
      tests/perf/test-hello-world.js
  35. 2
      tests/perf/test-hex-decode.js
  36. 2
      tests/perf/test-hex-encode.js
  37. 2
      tests/perf/test-json-integer-parse.js
  38. 2
      tests/perf/test-json-number-parse.js
  39. 2
      tests/perf/test-json-serialize.js
  40. 2
      tests/perf/test-json-string-bench.js
  41. 2
      tests/perf/test-json-string-parse.js
  42. 2
      tests/perf/test-json-string-stringify.js
  43. 2
      tests/perf/test-prop-read.js
  44. 2
      tests/perf/test-prop-write.js
  45. 2
      tests/perf/test-reg-readwrite-object.js
  46. 2
      tests/perf/test-reg-readwrite-plain.js
  47. 2
      tests/perf/test-regexp-string-parse.js
  48. 2
      tests/perf/test-string-array-concat.js
  49. 2
      tests/perf/test-string-compare.js
  50. 2
      tests/perf/test-string-decodeuri.js
  51. 2
      tests/perf/test-string-encodeuri.js
  52. 2
      tests/perf/test-string-intern-match.js
  53. 2
      tests/perf/test-string-intern-miss.js
  54. 2
      tests/perf/test-string-plain-concat.js
  55. 2
      tests/perf/test-string-uppercase.js
  56. 2
      tests/perf/test-try-catch-nothrow.js
  57. 2
      tests/perf/test-try-catch-throw.js
  58. 2
      tests/perf/test-try-finally-nothrow.js
  59. 2
      tests/perf/test-try-finally-throw.js

41
Makefile

@ -1188,40 +1188,55 @@ massif-arcfour: massif-test-dev-arcfour
# - Ruby and Lua are interpreted but don't use reference counting
# - Mujs is interpreted but doesn't use reference counting
# - Rhino compiles to Java bytecode and is ultimately JITed
# - Node.js (V8) is JITed
# - Luajit is JITed
#TIME=python util/time_multi.py --count 1 --mode min # Run just once
#TIME=python util/time_multi.py --count 3 --mode min # Take minimum time of N
TIME=python util/time_multi.py --count 5 --mode min # Take minimum time of N
#TIME=python util/time_multi.py --count 3 --sleep 10 --mode min # Take minimum time of N
TIME=python util/time_multi.py --count 5 --sleep 10 --mode min # Take minimum time of N
# Blocks: optimization variants, previous versions, other interpreting engines,
# other JIT engines.
perftest: duk duk.O2 duk.O3 duk.O4
for i in tests/perf/*.js; do \
printf '%-30s:' "`basename $$i`"; \
printf ' duk-Os %5s' "`$(TIME) ./duk $$i`"; \
printf ' duk-O2 %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' duk-O3 %5s' "`$(TIME) ./duk.O3 $$i`"; \
printf ' duk-O4 %5s' "`$(TIME) ./duk.O4 $$i`"; \
printf ' duk.112 %5s' "`$(TIME) ./duk.112 $$i`"; \
printf ' duk.123 %5s' "`$(TIME) ./duk.123 $$i`"; \
printf ' rhino %5s' "`$(TIME) rhino $$i`"; \
printf ' duk.Os %5s' "`$(TIME) ./duk $$i`"; \
printf ' duk.O2 %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' duk.O3 %5s' "`$(TIME) ./duk.O3 $$i`"; \
printf ' duk.O4 %5s' "`$(TIME) ./duk.O4 $$i`"; \
printf ' |'; \
printf ' duk.O2.130 %5s' "`$(TIME) ./duk.O2.130 $$i`"; \
printf ' duk.O2.124 %5s' "`$(TIME) ./duk.O2.124 $$i`"; \
printf ' duk.O2.113 %5s' "`$(TIME) ./duk.O2.113 $$i`"; \
printf ' duk.O2.102 %5s' "`$(TIME) ./duk.O2.102 $$i`"; \
printf ' |'; \
printf ' mujs %5s' "`$(TIME) mujs $$i`"; \
printf ' lua %5s' "`$(TIME) lua $${i%%.js}.lua`"; \
printf ' python %5s' "`$(TIME) python $${i%%.js}.py`"; \
printf ' perl %5s' "`$(TIME) perl $${i%%.js}.pl`"; \
printf ' ruby %5s' "`$(TIME) ruby $${i%%.js}.rb`"; \
printf ' |'; \
printf ' rhino %5s' "`$(TIME) rhino $$i`"; \
printf ' node %5s' "`$(TIME) node $$i`"; \
printf ' luajit %5s' "`$(TIME) luajit $${i%%.js}.lua`"; \
printf '\n'; \
done
perftestduk: duk duk.O2
for i in tests/perf/*.js; do \
printf '%-30s:' "`basename $$i`"; \
printf ' duk-Os %5s' "`$(TIME) ./duk $$i`"; \
printf ' duk-O2 %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' duk.112 %5s' "`$(TIME) ./duk.112 $$i`"; \
printf ' duk.Os %5s' "`$(TIME) ./duk $$i`"; \
printf ' duk.O2 %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' |'; \
printf ' duk.O2.130 %5s' "`$(TIME) ./duk.O2.130 $$i`"; \
printf ' duk.O2.124 %5s' "`$(TIME) ./duk.O2.124 $$i`"; \
printf ' duk.O2.113 %5s' "`$(TIME) ./duk.O2.113 $$i`"; \
printf ' duk.O2.102 %5s' "`$(TIME) ./duk.O2.102 $$i`"; \
printf '\n'; \
done
perftestduk3: duk.O2
for i in tests/perf/*.js; do \
printf '%-30s:' "`basename $$i`"; \
printf ' duk-O2'; \
printf ' duk.O2'; \
printf ' %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' %5s' "`$(TIME) ./duk.O2 $$i`"; \
printf ' %5s' "`$(TIME) ./duk.O2 $$i`"; \

2
tests/perf/test-add-fastint.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var x = 123;

2
tests/perf/test-add-float.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var x = 123.1;

3
tests/perf/test-add-nan-fastint.js

@ -1,6 +1,9 @@
/*
* Test addition when it involves a NaN, which matters on x86.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var x = 0 / 0;

3
tests/perf/test-add-nan.js

@ -1,6 +1,9 @@
/*
* Test addition when it involves a NaN, which matters on x86.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var x = 0 / 0;

2
tests/perf/test-array-read.js

@ -2,6 +2,8 @@
* Basic array read performance
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var i;

2
tests/perf/test-array-write.js

@ -2,6 +2,8 @@
* Basic array write performance
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var i;

2
tests/perf/test-assign-add.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t;

3
tests/perf/test-assign-addto-nan.js

@ -12,6 +12,9 @@
* the difference is not caused by packed duk_tval and NaN normalization
* involved in that.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-assign-addto.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t = 0;

2
tests/perf/test-assign-const-int.js

@ -2,6 +2,8 @@
* Loading integer constant to register.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t;

2
tests/perf/test-assign-const.js

@ -2,6 +2,8 @@
* Loading constant to register.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t;

2
tests/perf/test-assign-literal.js

@ -2,6 +2,8 @@
* Loading a mix of plain literals to register.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t;

2
tests/perf/test-assign-reg.js

@ -2,6 +2,8 @@
* Loading constant to register.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var t;

2
tests/perf/test-bitwise-ops.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var x, y, z;
var i, n;

2
tests/perf/test-break-fast.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
for (i = 0; i < 1e7; i++) {

2
tests/perf/test-break-slow.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
for (i = 0; i < 1e7; i++) {

2
tests/perf/test-buffer-nodejs-read.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = new Buffer(4096);
var i;

2
tests/perf/test-buffer-nodejs-write.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = new Buffer(4096);
var i;

2
tests/perf/test-buffer-object-read.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = new Duktape.Buffer(4096);
var i;

2
tests/perf/test-buffer-object-write.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = new Duktape.Buffer(4096);
var i;

2
tests/perf/test-buffer-plain-read.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = Duktape.Buffer(4096);
var i;

2
tests/perf/test-buffer-plain-write.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var b = Duktape.Buffer(4096);
var i;

2
tests/perf/test-call-basic.js

@ -2,6 +2,8 @@
* Basic function call performance.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-call-native.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var arr = [];
for (var i = 0; i < 1e3; i++) {

2
tests/perf/test-compile-mandel-nofrac.js

@ -3,6 +3,8 @@
// constants are integers, which was a significant impact on compile
// time (about 20% faster than with fractions).
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var src = "(function mandel() {\n var w = 80;\n var h = 40;\n var iter = 100;\n var i, j, k;\n var x0, y0, xx, yy, c, xx2, yy2;\n var res;\n\n for (i = 0; i - h; i += 1) {\n y0 = (i / h) * 4 - 2;\n\n res = [];\n\n for (j = 0; j - w; j += 1) {\n x0 = (j / w) * 4 - 2;\n\n xx = 0;\n yy = 0;\n c = \"#\";\n\n for (k = 0; k - iter; k += 1) {\n /* z -> z^2 + c\n * -> (xx+i*yy)^2 + (x0+i*y0)\n * -> xx*xx+i*2*xx*yy-yy*yy + x0 + i*y0\n * -> (xx*xx - yy*yy + x0) + i*(2*xx*yy + y0)\n */\n\n xx2 = xx*xx;\n yy2 = yy*yy;\n\n if (Math.max(0, 4 - (xx2 + yy2))) {\n yy = 2*xx*yy + y0;\n xx = xx2 - yy2 + x0;\n } else {\n /* xx^2 + yy^2 >= 4 */\n c = \".\";\n break;\n }\n }\n\n res[res.length] = c;\n }\n\n print(res.join(''));\n }\n})\n";

2
tests/perf/test-compile-mandel.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var src = "(function mandel() {\n var w = 80;\n var h = 40;\n var iter = 100;\n var i, j, k;\n var x0, y0, xx, yy, c, xx2, yy2;\n var res;\n\n for (i = 0; i - h; i += 1) {\n y0 = (i / h) * 4.0 - 2.0;\n\n res = [];\n\n for (j = 0; j - w; j += 1) {\n x0 = (j / w) * 4.0 - 2.0;\n\n xx = 0;\n yy = 0;\n c = \"#\";\n\n for (k = 0; k - iter; k += 1) {\n /* z -> z^2 + c\n * -> (xx+i*yy)^2 + (x0+i*y0)\n * -> xx*xx+i*2*xx*yy-yy*yy + x0 + i*y0\n * -> (xx*xx - yy*yy + x0) + i*(2*xx*yy + y0)\n */\n\n xx2 = xx*xx;\n yy2 = yy*yy;\n\n if (Math.max(0, 4.0 - (xx2 + yy2))) {\n yy = 2*xx*yy + y0;\n xx = xx2 - yy2 + x0;\n } else {\n /* xx^2 + yy^2 >= 4.0 */\n c = \".\";\n break;\n }\n }\n\n res[res.length] = c;\n }\n\n print(res.join(''));\n }\n})\n";

2
tests/perf/test-compile-short.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
var src = '123 + myval';

2
tests/perf/test-continue-fast.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
for (i = 0; i < 1e7; i++) {

2
tests/perf/test-continue-slow.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;
for (i = 0; i < 1e7; i++) {

2
tests/perf/test-empty-loop.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-fib.js

@ -2,6 +2,8 @@
* Fibonacci test, exercises call handling and recursion
*/
if (typeof print !== 'function') { print = console.log; }
function fib(n) {
return n <= 1 ? n : fib(n - 2) + fib(n - 1);
}

2
tests/perf/test-global-lookup.js

@ -3,6 +3,8 @@
* "print('hello');" go through a slow path GETVAR lookup.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-hello-world.js

@ -1,3 +1,5 @@
// Hello world test for memory testing
if (typeof print !== 'function') { print = console.log; }
print('Hello world!');

2
tests/perf/test-hex-decode.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var tmp1 = [];
var tmp2 = [];

2
tests/perf/test-hex-encode.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var tmp1 = [];
var tmp2 = [];

2
tests/perf/test-json-integer-parse.js

@ -2,6 +2,8 @@
* Test JSON number parsing (decode loop) for fast path integers.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var arr = [];
var i;

2
tests/perf/test-json-number-parse.js

@ -2,6 +2,8 @@
* Test JSON number parsing (decode loop) for arbitrary numbers.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var arr = [];
var i;

2
tests/perf/test-json-serialize.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function build() {
var obj = {};

2
tests/perf/test-json-string-bench.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function rndAscii(len) {
var res = [];
var i;

2
tests/perf/test-json-string-parse.js

@ -2,6 +2,8 @@
* Test JSON string parsing (decode loop) for fast path ASCII text.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-json-string-stringify.js

@ -2,6 +2,8 @@
* Test JSON string stringifying (encode loop) for fast path ASCII text.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-prop-read.js

@ -2,6 +2,8 @@
* Basic property read performance
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var obj = { xxx1: 1, xxx2: 2, xxx3: 3, xxx4: 4, foo: 123 };
var i;

2
tests/perf/test-prop-write.js

@ -2,6 +2,8 @@
* Basic property write performance
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var obj = { xxx1: 1, xxx2: 2, xxx3: 3, xxx4: 4, foo: 123 };
var i;

2
tests/perf/test-reg-readwrite-object.js

@ -3,6 +3,8 @@
* a dispatch and a tval copy for a heap-allocated tval.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var a, b, c, d;
var i;

2
tests/perf/test-reg-readwrite-plain.js

@ -3,6 +3,8 @@
* a dispatch and a tval copy for a non-heap-allocated tval.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var a, b, c, d;
var i;

2
tests/perf/test-regexp-string-parse.js

@ -4,6 +4,8 @@
* regexp bytecode. Regexp is not executed.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-string-array-concat.js

@ -3,6 +3,8 @@
* intermediate step is string interned.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i, j;
var t;

2
tests/perf/test-string-compare.js

@ -3,6 +3,8 @@
* not much going on here.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var a, b, c, d, e, f, g;
var i;

2
tests/perf/test-string-decodeuri.js

@ -2,6 +2,8 @@
* Test string decodeURI() for a long ASCII snippet (fast path).
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-string-encodeuri.js

@ -2,6 +2,8 @@
* Test string encodeURI() for a long ASCII snippet (fast path).
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-string-intern-match.js

@ -4,6 +4,8 @@
* hashing but limited memory churn.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var buf = Duktape.Buffer(2048);
var i;

2
tests/perf/test-string-intern-miss.js

@ -4,6 +4,8 @@
* hashing and memory churn.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var buf = Duktape.Buffer(2048);
var i;

2
tests/perf/test-string-plain-concat.js

@ -3,6 +3,8 @@
* string implementation because every intermediate step is string interned.
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var i, j;
var t;

2
tests/perf/test-string-uppercase.js

@ -2,6 +2,8 @@
* Test string uppercasing for a long ASCII snippet (fast path).
*/
if (typeof print !== 'function') { print = console.log; }
function test() {
var txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var i;

2
tests/perf/test-try-catch-nothrow.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-try-catch-throw.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-try-finally-nothrow.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

2
tests/perf/test-try-finally-throw.js

@ -1,3 +1,5 @@
if (typeof print !== 'function') { print = console.log; }
function test() {
var i;

Loading…
Cancel
Save