2020-10-02 08:55:02 +02:00
|
|
|
#![feature(test)]
|
|
|
|
|
|
|
|
///! Test evaluating with scope
|
|
|
|
extern crate test;
|
|
|
|
|
2020-11-16 14:14:32 +01:00
|
|
|
use rhai::{Engine, Module, OptimizationLevel};
|
2020-10-02 08:55:02 +02:00
|
|
|
use test::Bencher;
|
|
|
|
|
|
|
|
#[bench]
|
2020-10-03 05:42:54 +02:00
|
|
|
fn bench_eval_module(bench: &mut Bencher) {
|
2020-10-02 08:55:02 +02:00
|
|
|
let script = r#"
|
|
|
|
fn foo(x) { x + 1 }
|
|
|
|
fn bar(x) { foo(x) }
|
|
|
|
"#;
|
|
|
|
|
|
|
|
let mut engine = Engine::new();
|
|
|
|
engine.set_optimization_level(OptimizationLevel::None);
|
|
|
|
|
|
|
|
let ast = engine.compile(script).unwrap();
|
|
|
|
|
2020-10-03 05:42:54 +02:00
|
|
|
let module = Module::eval_ast_as_new(Default::default(), &ast, &engine).unwrap();
|
2020-10-02 08:55:02 +02:00
|
|
|
|
2020-11-16 14:14:32 +01:00
|
|
|
engine.register_module("testing", module);
|
2020-10-02 08:55:02 +02:00
|
|
|
|
|
|
|
let ast = engine
|
|
|
|
.compile(
|
|
|
|
r#"
|
|
|
|
fn foo(x) { x - 1 }
|
|
|
|
import "testing" as t;
|
|
|
|
t::bar(41)
|
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
bench.iter(|| engine.consume_ast(&ast).unwrap());
|
|
|
|
}
|
|
|
|
|
|
|
|
#[bench]
|
|
|
|
fn bench_eval_function_call(bench: &mut Bencher) {
|
|
|
|
let mut engine = Engine::new();
|
|
|
|
engine.set_optimization_level(OptimizationLevel::None);
|
|
|
|
|
|
|
|
let ast = engine
|
|
|
|
.compile(
|
|
|
|
r#"
|
|
|
|
fn foo(x) { x - 1 }
|
|
|
|
fn bar(x) { foo(x) }
|
|
|
|
bar(41)
|
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
bench.iter(|| engine.consume_ast(&ast).unwrap());
|
|
|
|
}
|