|
|
@ -10,11 +10,7 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; |
|
|
|
)] |
|
|
|
)] |
|
|
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; |
|
|
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; |
|
|
|
|
|
|
|
|
|
|
|
static SYMBOL_CREATION: &str = r#" |
|
|
|
static SYMBOL_CREATION: &str = include_str!("bench_scripts/symbol_creation.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
return Symbol(); |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn symbol_creation(c: &mut Criterion) { |
|
|
|
fn symbol_creation(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -23,18 +19,7 @@ fn symbol_creation(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static FOR_LOOP: &str = r#" |
|
|
|
static FOR_LOOP: &str = include_str!("bench_scripts/for_loop.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let b = "hello"; |
|
|
|
|
|
|
|
for (let a = 10; a < 100; a += 5) { |
|
|
|
|
|
|
|
if (a < 50) { |
|
|
|
|
|
|
|
b += "world"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return b; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn for_loop(c: &mut Criterion) { |
|
|
|
fn for_loop(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -43,18 +28,7 @@ fn for_loop(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static FIBONACCI: &str = r#" |
|
|
|
static FIBONACCI: &str = include_str!("bench_scripts/fibonacci.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let num = 12; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function fib(n) { |
|
|
|
|
|
|
|
if (n <= 1) return 1; |
|
|
|
|
|
|
|
return fib(n - 1) + fib(n - 2); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return fib(num); |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn fibonacci(c: &mut Criterion) { |
|
|
|
fn fibonacci(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -63,16 +37,7 @@ fn fibonacci(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static OBJECT_CREATION: &str = r#" |
|
|
|
static OBJECT_CREATION: &str = include_str!("bench_scripts/object_creation.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let test = { |
|
|
|
|
|
|
|
my_prop: "hello", |
|
|
|
|
|
|
|
another: 65, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return test; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn object_creation(c: &mut Criterion) { |
|
|
|
fn object_creation(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -81,16 +46,7 @@ fn object_creation(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static OBJECT_PROP_ACCESS_CONST: &str = r#" |
|
|
|
static OBJECT_PROP_ACCESS_CONST: &str = include_str!("bench_scripts/object_prop_access_const.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let test = { |
|
|
|
|
|
|
|
my_prop: "hello", |
|
|
|
|
|
|
|
another: 65, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return test.my_prop; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn object_prop_access_const(c: &mut Criterion) { |
|
|
|
fn object_prop_access_const(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -99,16 +55,7 @@ fn object_prop_access_const(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static OBJECT_PROP_ACCESS_DYN: &str = r#" |
|
|
|
static OBJECT_PROP_ACCESS_DYN: &str = include_str!("bench_scripts/object_prop_access_dyn.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let test = { |
|
|
|
|
|
|
|
my_prop: "hello", |
|
|
|
|
|
|
|
another: 65, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return test["my" + "_prop"]; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn object_prop_access_dyn(c: &mut Criterion) { |
|
|
|
fn object_prop_access_dyn(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -117,13 +64,7 @@ fn object_prop_access_dyn(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static REGEXP_LITERAL_CREATION: &str = r#" |
|
|
|
static REGEXP_LITERAL_CREATION: &str = include_str!("bench_scripts/regexp_literal_creation.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let regExp = /hello/i; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return regExp; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn regexp_literal_creation(c: &mut Criterion) { |
|
|
|
fn regexp_literal_creation(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -132,13 +73,7 @@ fn regexp_literal_creation(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static REGEXP_CREATION: &str = r#" |
|
|
|
static REGEXP_CREATION: &str = include_str!("bench_scripts/regexp_creation.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let regExp = new RegExp('hello', 'i'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return regExp; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn regexp_creation(c: &mut Criterion) { |
|
|
|
fn regexp_creation(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -147,13 +82,7 @@ fn regexp_creation(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static REGEXP_LITERAL: &str = r#" |
|
|
|
static REGEXP_LITERAL: &str = include_str!("bench_scripts/regexp_literal.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let regExp = /hello/i; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return regExp.test("Hello World"); |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn regexp_literal(c: &mut Criterion) { |
|
|
|
fn regexp_literal(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
@ -162,28 +91,14 @@ fn regexp_literal(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static REGEXP: &str = r#" |
|
|
|
static REGEXP: &str = include_str!("bench_scripts/regexp.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let regExp = new RegExp('hello', 'i'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return regExp.test("Hello World"); |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn regexp(c: &mut Criterion) { |
|
|
|
fn regexp(c: &mut Criterion) { |
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
// Execute the code by taking into account realm creation, lexing and parsing
|
|
|
|
c.bench_function("RegExp (Full)", move |b| b.iter(|| exec(black_box(REGEXP)))); |
|
|
|
c.bench_function("RegExp (Full)", move |b| b.iter(|| exec(black_box(REGEXP)))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static ARRAY_ACCESS: &str = r#" |
|
|
|
static ARRAY_ACCESS: &str = include_str!("bench_scripts/array_access.js"); |
|
|
|
(function () { |
|
|
|
|
|
|
|
let testArr = [1,2,3,4,5]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let res = testArr[2]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return res; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn array_access(c: &mut Criterion) { |
|
|
|
fn array_access(c: &mut Criterion) { |
|
|
|
c.bench_function("Array access (Full)", move |b| { |
|
|
|
c.bench_function("Array access (Full)", move |b| { |
|
|
@ -191,16 +106,7 @@ fn array_access(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static ARRAY_CREATE: &str = r#" |
|
|
|
static ARRAY_CREATE: &str = include_str!("bench_scripts/array_create.js"); |
|
|
|
(function(){ |
|
|
|
|
|
|
|
let testArr = []; |
|
|
|
|
|
|
|
for (let a = 0; a <= 500; a++) { |
|
|
|
|
|
|
|
testArr[a] = ('p' + a); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return testArr; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn array_creation(c: &mut Criterion) { |
|
|
|
fn array_creation(c: &mut Criterion) { |
|
|
|
c.bench_function("Array creation (Full)", move |b| { |
|
|
|
c.bench_function("Array creation (Full)", move |b| { |
|
|
@ -208,32 +114,7 @@ fn array_creation(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static ARRAY_POP: &str = r#" |
|
|
|
static ARRAY_POP: &str = include_str!("bench_scripts/array_pop.js"); |
|
|
|
(function(){ |
|
|
|
|
|
|
|
let testArray = [83, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, |
|
|
|
|
|
|
|
45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, |
|
|
|
|
|
|
|
234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, |
|
|
|
|
|
|
|
99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, |
|
|
|
|
|
|
|
77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, |
|
|
|
|
|
|
|
2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, |
|
|
|
|
|
|
|
83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, |
|
|
|
|
|
|
|
56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, |
|
|
|
|
|
|
|
27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, |
|
|
|
|
|
|
|
17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, |
|
|
|
|
|
|
|
56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, |
|
|
|
|
|
|
|
28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, |
|
|
|
|
|
|
|
45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, |
|
|
|
|
|
|
|
23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, |
|
|
|
|
|
|
|
36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, |
|
|
|
|
|
|
|
45, 93, 17, 28, 83, 62, 99, 36, 28]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (testArray.length > 0) { |
|
|
|
|
|
|
|
testArray.pop(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return testArray; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn array_pop(c: &mut Criterion) { |
|
|
|
fn array_pop(c: &mut Criterion) { |
|
|
|
c.bench_function("Array pop (Full)", move |b| { |
|
|
|
c.bench_function("Array pop (Full)", move |b| { |
|
|
@ -241,14 +122,7 @@ fn array_pop(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static STRING_CONCAT: &str = r#" |
|
|
|
static STRING_CONCAT: &str = include_str!("bench_scripts/string_concat.js"); |
|
|
|
(function(){ |
|
|
|
|
|
|
|
var a = "hello"; |
|
|
|
|
|
|
|
var b = "world"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var c = a + b; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn string_concat(c: &mut Criterion) { |
|
|
|
fn string_concat(c: &mut Criterion) { |
|
|
|
c.bench_function("String concatenation (Full)", move |b| { |
|
|
|
c.bench_function("String concatenation (Full)", move |b| { |
|
|
@ -256,17 +130,7 @@ fn string_concat(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static STRING_COMPARE: &str = r#" |
|
|
|
static STRING_COMPARE: &str = include_str!("bench_scripts/string_compare.js"); |
|
|
|
(function(){ |
|
|
|
|
|
|
|
var a = "hello"; |
|
|
|
|
|
|
|
var b = "world"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var c = a == b; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var d = b; |
|
|
|
|
|
|
|
var e = d == b; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn string_compare(c: &mut Criterion) { |
|
|
|
fn string_compare(c: &mut Criterion) { |
|
|
|
c.bench_function("String comparison (Full)", move |b| { |
|
|
|
c.bench_function("String comparison (Full)", move |b| { |
|
|
@ -274,12 +138,7 @@ fn string_compare(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static STRING_COPY: &str = r#" |
|
|
|
static STRING_COPY: &str = include_str!("bench_scripts/string_copy.js"); |
|
|
|
(function(){ |
|
|
|
|
|
|
|
var a = "hello"; |
|
|
|
|
|
|
|
var b = a; |
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn string_copy(c: &mut Criterion) { |
|
|
|
fn string_copy(c: &mut Criterion) { |
|
|
|
c.bench_function("String copy (Full)", move |b| { |
|
|
|
c.bench_function("String copy (Full)", move |b| { |
|
|
@ -287,15 +146,7 @@ fn string_copy(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static NUMBER_OBJECT_ACCESS: &str = r#" |
|
|
|
static NUMBER_OBJECT_ACCESS: &str = include_str!("bench_scripts/number_object_access.js"); |
|
|
|
new Number( |
|
|
|
|
|
|
|
new Number( |
|
|
|
|
|
|
|
new Number( |
|
|
|
|
|
|
|
new Number(100).valueOf() - 10.5 |
|
|
|
|
|
|
|
).valueOf() + 100 |
|
|
|
|
|
|
|
).valueOf() * 1.6 |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn number_object_access(c: &mut Criterion) { |
|
|
|
fn number_object_access(c: &mut Criterion) { |
|
|
|
c.bench_function("Number Object Access (Full)", move |b| { |
|
|
|
c.bench_function("Number Object Access (Full)", move |b| { |
|
|
@ -303,15 +154,7 @@ fn number_object_access(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static BOOLEAN_OBJECT_ACCESS: &str = r#" |
|
|
|
static BOOLEAN_OBJECT_ACCESS: &str = include_str!("bench_scripts/boolean_object_access.js"); |
|
|
|
new Boolean( |
|
|
|
|
|
|
|
!new Boolean( |
|
|
|
|
|
|
|
new Boolean( |
|
|
|
|
|
|
|
!(new Boolean(false).valueOf()) && (new Boolean(true).valueOf()) |
|
|
|
|
|
|
|
).valueOf() |
|
|
|
|
|
|
|
).valueOf() |
|
|
|
|
|
|
|
).valueOf() |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn boolean_object_access(c: &mut Criterion) { |
|
|
|
fn boolean_object_access(c: &mut Criterion) { |
|
|
|
c.bench_function("Boolean Object Access (Full)", move |b| { |
|
|
|
c.bench_function("Boolean Object Access (Full)", move |b| { |
|
|
@ -319,15 +162,7 @@ fn boolean_object_access(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static STRING_OBJECT_ACCESS: &str = r#" |
|
|
|
static STRING_OBJECT_ACCESS: &str = include_str!("bench_scripts/string_object_access.js"); |
|
|
|
new String( |
|
|
|
|
|
|
|
new String( |
|
|
|
|
|
|
|
new String( |
|
|
|
|
|
|
|
new String('Hello').valueOf() + new String(", world").valueOf() |
|
|
|
|
|
|
|
).valueOf() + '!' |
|
|
|
|
|
|
|
).valueOf() |
|
|
|
|
|
|
|
).valueOf() |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn string_object_access(c: &mut Criterion) { |
|
|
|
fn string_object_access(c: &mut Criterion) { |
|
|
|
c.bench_function("String Object Access (Full)", move |b| { |
|
|
|
c.bench_function("String Object Access (Full)", move |b| { |
|
|
@ -335,9 +170,7 @@ fn string_object_access(c: &mut Criterion) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static ARITHMETIC_OPERATIONS: &str = r#" |
|
|
|
static ARITHMETIC_OPERATIONS: &str = include_str!("bench_scripts/arithmetic_operations.js"); |
|
|
|
((2 + 2) ** 3 / 100 - 5 ** 3 * -1000) ** 2 + 100 - 8 |
|
|
|
|
|
|
|
"#; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn arithmetic_operations(c: &mut Criterion) { |
|
|
|
fn arithmetic_operations(c: &mut Criterion) { |
|
|
|
c.bench_function("Arithmetic operations (Full)", move |b| { |
|
|
|
c.bench_function("Arithmetic operations (Full)", move |b| { |
|
|
|