diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c217c8ad0c..a8f5f68125d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Description of the upcoming release here. ### Added +- [#1502](https://github.com/FuelLabs/fuel-core/pull/1502): Added price benchmark for `vm_initialization`. - [#1492](https://github.com/FuelLabs/fuel-core/pull/1492): Support backward iteration in the RocksDB. It allows backward queries that were not allowed before. - [#1490](https://github.com/FuelLabs/fuel-core/pull/1490): Add push and pop benchmarks. - [#1485](https://github.com/FuelLabs/fuel-core/pull/1485): Prepare rc release of fuel core v0.21 diff --git a/Cargo.lock b/Cargo.lock index a7aff77e755..c1cf36b1949 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2725,9 +2725,9 @@ dependencies = [ [[package]] name = "fuel-asm" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6c74190f51c347e8df9254c11828082dd143870271c2c490dc498efc306699" +checksum = "3cee560e1eeac4d292e38111f694f21983377176eb600b57cacaed86b747ffa2" dependencies = [ "bitflags 2.4.1", "fuel-types", @@ -3245,9 +3245,9 @@ dependencies = [ [[package]] name = "fuel-crypto" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed59e6b5d69ab5cacda0eb29d34920e1709567271cf2c40d62cb1ad920c44c00" +checksum = "fca614c332efaeaae796a80c72c0a29a3853eab6c2af67379bd01473e0277449" dependencies = [ "coins-bip32", "coins-bip39", @@ -3266,9 +3266,9 @@ dependencies = [ [[package]] name = "fuel-derive" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27a9c356fe5489b62f7dade3c07c93dacd52d86bd236f8e9b8c359a936def4ae" +checksum = "1efdc9a47d14947cd50e88161eb2b6c85e0ce34a00a321103f1f7764e8d6b0d3" dependencies = [ "proc-macro2", "quote", @@ -3278,9 +3278,9 @@ dependencies = [ [[package]] name = "fuel-merkle" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8c8e4fe5d8f6fab234ccea69ef893df502b9a01af2d53e7a70e35d3ffa035a" +checksum = "eeb0d0661a655f7753afa5124ccd90a7b9218cb6d777235060b09f4da9feb22d" dependencies = [ "derive_more", "digest 0.10.7", @@ -3293,15 +3293,15 @@ dependencies = [ [[package]] name = "fuel-storage" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da0820260094843088c8612590ec052ceeef64b51ab96883f7678ce72552cb4" +checksum = "97697cb72cb86e33dd5a3ef5509a233a290174f4b3b5c43b4be4484ccb6b2fc0" [[package]] name = "fuel-tx" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44b16c51f3d78c71f864939d31798a512ae781d45358a54fc051cba33f125296" +checksum = "194617f09afa17e8cc4c4127ceed1d0fb1549680eb9b2a90c743605298a1c33e" dependencies = [ "bitflags 2.4.1", "derivative", @@ -3321,9 +3321,9 @@ dependencies = [ [[package]] name = "fuel-types" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e712ef330eed942b456691919f7a62e23563377fd2d59d6e04d54162863ba071" +checksum = "c0a170bd25f8cc3def3833b2032646bf1ca77460353dfa8b2b89c4d83ad1f2cf" dependencies = [ "fuel-derive", "hex", @@ -3333,9 +3333,9 @@ dependencies = [ [[package]] name = "fuel-vm" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98a12f59ae11283c656894d3092f3d8e47d1f8a91a17de35a6a977d16084543b" +checksum = "c3e24e0f8e58c08192dd012eef70f47063aa48e4222209df6044aa0a471e0fd6" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 887449ae98c..5677557a413 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,7 +77,7 @@ fuel-core-tests = { version = "0.0.0", path = "./tests" } fuel-core-xtask = { version = "0.0.0", path = "./xtask" } # Fuel dependencies -fuel-vm-private = { version = "0.42.0", package = "fuel-vm", default-features = false } +fuel-vm-private = { version = "0.43.0", package = "fuel-vm", default-features = false } # Common dependencies anyhow = "1.0" diff --git a/benches/benches/block_target_gas_set/default_gas_costs.rs b/benches/benches/block_target_gas_set/default_gas_costs.rs index cd72bc31e6e..e2246fe9bf9 100644 --- a/benches/benches/block_target_gas_set/default_gas_costs.rs +++ b/benches/benches/block_target_gas_set/default_gas_costs.rs @@ -43,7 +43,10 @@ pub fn default_gas_costs() -> GasCostsValues { lw: 2, mint: 25515, mlog: 2, - vm_initialization: 1, + vm_initialization: DependentCost::HeavyOperation { + base: 2000, + gas_per_unit: 0, + }, modi: 2, mod_op: 2, movi: 2, diff --git a/benches/benches/utils.rs b/benches/benches/utils.rs index fa3dd065ede..e07a36f012a 100644 --- a/benches/benches/utils.rs +++ b/benches/benches/utils.rs @@ -77,7 +77,7 @@ pub fn set_full_word(r: RegisterId, v: Word) -> Vec { ops } -const BENCH_RECEIPTS: usize = (u16::MAX - 1) as usize; +const BENCH_RECEIPTS: usize = (u16::MAX - 4) as usize; /// Testing receipt context #[allow(dead_code)] // Unsure why this is needed, as the code is used diff --git a/benches/benches/vm.rs b/benches/benches/vm.rs index e9d4a5982fb..3175eafcf1a 100644 --- a/benches/benches/vm.rs +++ b/benches/benches/vm.rs @@ -1,5 +1,6 @@ mod contract; mod utils; +mod vm_initialization; mod vm_set; use criterion::{ @@ -11,6 +12,7 @@ use criterion::{ Criterion, }; +use crate::vm_initialization::vm_initialization; use contract::*; use fuel_core_benches::*; use fuel_core_types::fuel_asm::Instruction; @@ -71,9 +73,10 @@ fn vm(c: &mut Criterion) { crypto::run(c); flow::run(c); mem::run(c); + blockchain::run(c); contract_root(c); state_root(c); - blockchain::run(c); + vm_initialization(c); } criterion_group!(benches, vm); diff --git a/benches/benches/vm_initialization.rs b/benches/benches/vm_initialization.rs new file mode 100644 index 00000000000..518e360ec05 --- /dev/null +++ b/benches/benches/vm_initialization.rs @@ -0,0 +1,114 @@ +use criterion::{ + black_box, + Criterion, + Throughput, +}; +use fuel_core_types::{ + fuel_asm::{ + op, + Instruction, + }, + fuel_tx::{ + policies::Policies, + AssetId, + ConsensusParameters, + Input, + Output, + Script, + Transaction, + Word, + }, + fuel_types::canonical::Serialize, + fuel_vm::{ + checked_transaction::{ + Checked, + IntoChecked, + }, + interpreter::NotSupportedEcal, + Interpreter, + }, +}; +use rand::{ + rngs::StdRng, + Rng, + SeedableRng, +}; + +fn transaction( + rng: &mut R, + script: Vec, + script_data: Vec, + consensus_params: &ConsensusParameters, +) -> Checked