summaryrefslogtreecommitdiff
path: root/bench_util/benches/utf8.rs
diff options
context:
space:
mode:
Diffstat (limited to 'bench_util/benches/utf8.rs')
-rw-r--r--bench_util/benches/utf8.rs112
1 files changed, 112 insertions, 0 deletions
diff --git a/bench_util/benches/utf8.rs b/bench_util/benches/utf8.rs
new file mode 100644
index 000000000..021c409b8
--- /dev/null
+++ b/bench_util/benches/utf8.rs
@@ -0,0 +1,112 @@
+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;
+
+fn setup() -> Vec<Extension> {
+ vec![Extension::builder()
+ .js(vec![(
+ "setup.js",
+ Box::new(|| {
+ Ok(
+ 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);
+ "#
+ .into(),
+ )
+ }),
+ )])
+ .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);