Initial wasm support

This commit is contained in:
Sebastian Miasojed
2024-08-29 17:28:31 +02:00
parent 41c8d4e955
commit 5ac67bdc0d
69 changed files with 2277 additions and 8937 deletions
+7 -8
View File
@@ -1,11 +1,10 @@
[package]
name = "revive-benchmarks"
version.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true
authors.workspace = true
description = "revive compiler benchmarks"
version = "0.1.0"
edition = "2021"
authors = [
"Cyrill Leutwiler <cyrill@parity.io>",
]
[features]
default = ["bench-pvm-interpreter"]
@@ -17,8 +16,8 @@ bench-extensive = []
[dependencies]
hex = { workspace = true }
polkavm = { workspace = true }
revive-integration = { workspace = true }
revive-differential = { workspace = true, optional = true }
revive-integration = { path = "../integration" }
revive-differential = { path = "../differential", optional = true }
alloy-primitives = { workspace = true }
[dev-dependencies]
+8 -24
View File
@@ -1,4 +1,3 @@
use alloy_primitives::U256;
use criterion::{
criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, BenchmarkId,
Criterion,
@@ -149,43 +148,28 @@ fn bench_triangle_number(c: &mut Criterion) {
fn bench_fibonacci_recurisve(c: &mut Criterion) {
let group = group(c, "FibonacciRecursive");
#[cfg(feature = "bench-extensive")]
let parameters = [24, 27, 31, 36, 39]
.iter()
.map(|p| U256::from(*p))
.collect::<Vec<_>>();
let parameters = &[24, 27, 31, 36, 39];
#[cfg(not(feature = "bench-extensive"))]
let parameters = [12, 16, 20]
.iter()
.map(|p| U256::from(*p))
.collect::<Vec<_>>();
let parameters = &[12, 16, 20];
bench(group, &parameters, &parameters, Contract::fib_recursive);
bench(group, parameters, parameters, Contract::fib_recursive);
}
fn bench_fibonacci_iterative(c: &mut Criterion) {
let group = group(c, "FibonacciIterative");
#[cfg(feature = "bench-extensive")]
let parameters = [256, 162500, 650000, 6500000, 100000000, 400000000]
.iter()
.map(|p| U256::from(*p))
.collect::<Vec<_>>();
let parameters = &[256, 162500, 650000, 6500000, 100000000, 400000000];
#[cfg(not(feature = "bench-extensive"))]
let parameters = [64, 128, 256]
.iter()
.map(|p| U256::from(*p))
.collect::<Vec<_>>();
let parameters = &[64, 128, 256];
bench(group, &parameters, &parameters, Contract::fib_iterative);
bench(group, parameters, parameters, Contract::fib_iterative);
}
fn bench_fibonacci_binet(c: &mut Criterion) {
let group = group(c, "FibonacciBinet");
let parameters = [64, 128, 256]
.iter()
.map(|p| U256::from(*p))
.collect::<Vec<_>>();
let parameters = &[64, 128, 256];
bench(group, &parameters, &parameters, Contract::fib_binet);
bench(group, parameters, parameters, Contract::fib_binet);
}
fn bench_sha1(c: &mut Criterion) {
+6 -7
View File
@@ -1,4 +1,3 @@
use alloy_primitives::U256;
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use revive_integration::cases::Contract;
@@ -118,9 +117,9 @@ fn bench_fibonacci_recursive(c: &mut Criterion) {
c,
"PrepareFibonacciRecursive",
#[cfg(feature = "bench-evm")]
Contract::fib_recursive(U256::ZERO).evm_runtime,
Contract::fib_recursive(0).evm_runtime,
#[cfg(any(feature = "bench-pvm-interpreter", feature = "bench-pvm"))]
Contract::fib_recursive(U256::ZERO).pvm_runtime,
Contract::fib_recursive(0).pvm_runtime,
);
}
@@ -129,9 +128,9 @@ fn bench_fibonacci_iterative(c: &mut Criterion) {
c,
"PrepareFibonacciIterative",
#[cfg(feature = "bench-evm")]
Contract::fib_iterative(U256::ZERO).evm_runtime,
Contract::fib_iterative(0).evm_runtime,
#[cfg(any(feature = "bench-pvm-interpreter", feature = "bench-pvm"))]
Contract::fib_iterative(U256::ZERO).pvm_runtime,
Contract::fib_iterative(0).pvm_runtime,
);
}
@@ -140,9 +139,9 @@ fn bench_fibonacci_binet(c: &mut Criterion) {
c,
"PrepareFibonacciBinet",
#[cfg(feature = "bench-evm")]
Contract::fib_binet(U256::ZERO).evm_runtime,
Contract::fib_binet(0).evm_runtime,
#[cfg(any(feature = "bench-pvm-interpreter", feature = "bench-pvm"))]
Contract::fib_binet(U256::ZERO).pvm_runtime,
Contract::fib_binet(0).pvm_runtime,
);
}
+1 -4
View File
@@ -12,10 +12,7 @@ pub fn prepare_pvm(
config.set_sandbox(Some(SandboxKind::Linux));
let (instance, export_index) = mock_runtime::prepare(code, Some(config));
let transaction = State::default()
.transaction()
.with_default_account(code)
.calldata(input);
let transaction = State::default().transaction().calldata(input);
(transaction, instance, export_index)
}