1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-29 16:30:56 -05:00
denoland-deno/bench_util/benches/utf8.rs
Bartek Iwańczuk a1cd2a5915
refactor(core): definition of "ExtensionFileSource" (#17823)
This commit changes definition of "ExtensionFileSource", by changing
"code" field to being "ExtensionFileSourceCode" enum. Currently the enum
has only a single variant "IncludedInBinary". It is done in preparation
to allow embedders to decide if they want to include the source code in the
binary when snapshotting (in most cases they shouldn't do that).

In the follow up commit we'll add more variants to
"ExtensionFileSourceCode".

"include_js_files_dir!" macro was removed in favor "include_js_files!"
macro which can now accept "dir" option.
2023-02-20 01:11:56 +01:00

113 lines
2.4 KiB
Rust

// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
use deno_bench_util::bench_js_sync_with;
use deno_bench_util::bench_or_profile;
use deno_bench_util::bencher::benchmark_group;
use deno_bench_util::bencher::Bencher;
use deno_bench_util::BenchOptions;
use deno_core::Extension;
use deno_core::ExtensionFileSource;
use deno_core::ExtensionFileSourceCode;
fn setup() -> Vec<Extension> {
vec![Extension::builder("bench_setup")
.js(vec![ExtensionFileSource {
specifier: "setup.js".to_string(),
code: ExtensionFileSourceCode::IncludedInBinary(
r#"
const hello = "hello world\n";
const hello1k = hello.repeat(1e3);
const hello1m = hello.repeat(1e6);
const helloEncoded = Deno.core.encode(hello);
const hello1kEncoded = Deno.core.encode(hello1k);
const hello1mEncoded = Deno.core.encode(hello1m);
"#,
),
}])
.build()]
}
fn bench_utf8_encode_12_b(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.encode(hello);"#,
setup,
BenchOptions {
benching_inner: 1,
..Default::default()
},
);
}
fn bench_utf8_encode_12_kb(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.encode(hello1k);"#,
setup,
BenchOptions {
benching_inner: 1,
..Default::default()
},
);
}
fn bench_utf8_encode_12_mb(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.encode(hello1m);"#,
setup,
BenchOptions {
benching_inner: 1,
profiling_inner: 10,
profiling_outer: 10,
},
);
}
fn bench_utf8_decode_12_b(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.decode(helloEncoded);"#,
setup,
BenchOptions {
benching_inner: 1,
..Default::default()
},
);
}
fn bench_utf8_decode_12_kb(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.decode(hello1kEncoded);"#,
setup,
BenchOptions {
benching_inner: 1,
..Default::default()
},
);
}
fn bench_utf8_decode_12_mb(b: &mut Bencher) {
bench_js_sync_with(
b,
r#"Deno.core.decode(hello1mEncoded);"#,
setup,
BenchOptions {
benching_inner: 1,
profiling_inner: 10,
profiling_outer: 10,
},
);
}
benchmark_group!(
benches,
bench_utf8_encode_12_b,
bench_utf8_encode_12_kb,
bench_utf8_encode_12_mb,
bench_utf8_decode_12_b,
bench_utf8_decode_12_kb,
bench_utf8_decode_12_mb,
);
bench_or_profile!(benches);