-
Notifications
You must be signed in to change notification settings - Fork 60
/
bench_interp.cpp
44 lines (35 loc) · 1.43 KB
/
bench_interp.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <eosio/vm/backend.hpp>
#include <eosio/vm/error_codes.hpp>
#include <eosio/vm/watchdog.hpp>
#include <chrono>
#include <iostream>
using namespace eosio;
using namespace eosio::vm;
int main(int argc, char** argv) {
wasm_allocator wa;
using backend_t = eosio::vm::backend<nullptr_t>;
if (argc < 2) {
std::cerr << "Error, no wasm file provided\n";
return -1;
}
auto t3 = std::chrono::high_resolution_clock::now();
try {
auto code = backend_t::read_wasm( argv[1] );
auto t1 = std::chrono::high_resolution_clock::now();
backend_t bkend( code );
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "Startup " << std::chrono::duration_cast<std::chrono::nanoseconds>(t2-t1).count() << "\n";
bkend.set_wasm_allocator( &wa );
auto t3 = std::chrono::high_resolution_clock::now();
bkend.initialize();
bkend.execute_all(null_watchdog());
auto t4 = std::chrono::high_resolution_clock::now();
std::cout << "Execution " << std::chrono::duration_cast<std::chrono::nanoseconds>(t4-t3).count() << "\n";
} catch ( const eosio::vm::exception& ex ) {
auto t4 = std::chrono::high_resolution_clock::now();
std::cout << "Execution " << std::chrono::duration_cast<std::chrono::nanoseconds>(t4-t3).count() << "\n";
std::cerr << "eos-vm interpreter error\n";
std::cerr << ex.what() << " : " << ex.detail() << "\n";
}
return 0;
}