EVM gas for memory tiny optimization (#1578)
* EVM bin benches * Optimizing mem gas cost * Removing overflow_div since it's not used * More benchmarks
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
//! Parity EVM interpreter binary.
|
||||
|
||||
#![warn(missing_docs)]
|
||||
#![allow(dead_code)]
|
||||
extern crate ethcore;
|
||||
extern crate rustc_serialize;
|
||||
extern crate docopt;
|
||||
@@ -25,7 +26,7 @@ extern crate ethcore_util as util;
|
||||
|
||||
mod ext;
|
||||
|
||||
use std::time::Instant;
|
||||
use std::time::{Instant, Duration};
|
||||
use std::str::FromStr;
|
||||
use docopt::Docopt;
|
||||
use util::{U256, FromHex, Uint, Bytes};
|
||||
@@ -58,6 +59,15 @@ fn main() {
|
||||
params.code = Some(args.code());
|
||||
params.data = args.data();
|
||||
|
||||
let result = run_vm(params);
|
||||
println!("Gas used: {:?}", result.gas_used);
|
||||
println!("Output: {:?}", result.output);
|
||||
println!("Time: {}.{:.9}s", result.time.as_secs(), result.time.subsec_nanos());
|
||||
}
|
||||
|
||||
/// Execute VM with given `ActionParams`
|
||||
pub fn run_vm(params: ActionParams) -> ExecutionResults {
|
||||
let initial_gas = params.gas;
|
||||
let factory = Factory::new(VMType::Interpreter);
|
||||
let mut vm = factory.create(params.gas);
|
||||
let mut ext = ext::FakeExt::default();
|
||||
@@ -66,9 +76,21 @@ fn main() {
|
||||
let gas_left = vm.exec(params, &mut ext).finalize(ext).expect("OK");
|
||||
let duration = start.elapsed();
|
||||
|
||||
println!("Gas used: {:?}", args.gas() - gas_left);
|
||||
println!("Output: {:?}", "");
|
||||
println!("Time: {}.{:.9}s", duration.as_secs(), duration.subsec_nanos());
|
||||
ExecutionResults {
|
||||
gas_used: initial_gas - gas_left,
|
||||
output: Vec::new(),
|
||||
time: duration,
|
||||
}
|
||||
}
|
||||
|
||||
/// VM execution results
|
||||
pub struct ExecutionResults {
|
||||
/// Used gas
|
||||
pub gas_used: U256,
|
||||
/// Output as bytes
|
||||
pub output: Vec<u8>,
|
||||
/// Time Taken
|
||||
pub time: Duration,
|
||||
}
|
||||
|
||||
#[derive(Debug, RustcDecodable)]
|
||||
|
||||
Reference in New Issue
Block a user