1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

iai bench

This commit is contained in:
Robin Appelman 2021-02-12 23:00:18 +01:00
commit 0d99a9510b
6 changed files with 51 additions and 3 deletions

7
Cargo.lock generated
View file

@ -248,6 +248,12 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "iai"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
[[package]] [[package]]
name = "instant" name = "instant"
version = "0.1.9" version = "0.1.9"
@ -658,6 +664,7 @@ dependencies = [
"enumflags2", "enumflags2",
"err-derive", "err-derive",
"fnv", "fnv",
"iai",
"jemallocator", "jemallocator",
"main_error", "main_error",
"no-panic", "no-panic",

View file

@ -40,9 +40,14 @@ fnv = "1.0"
[dev-dependencies] [dev-dependencies]
pretty_assertions = "0.6" pretty_assertions = "0.6"
test-case = "1.0.0" test-case = "1.0.0"
iai = "0.1"
[profile.release] [profile.release]
lto = true lto = true
[profile.dev] [profile.dev]
opt-level = 2 opt-level = 2
[[bench]]
name = "iai"
harness = false

View file

@ -37,7 +37,7 @@ impl MessageHandler for AllMessages {
fn bench_all(input_file: &str, b: &mut Bencher) { fn bench_all(input_file: &str, b: &mut Bencher) {
let file = fs::read(input_file).expect("Unable to read file"); let file = fs::read(input_file).expect("Unable to read file");
let demo = Demo::new(file); let demo = Demo::new(&file);
let stream = demo.get_stream(); let stream = demo.get_stream();
b.iter(|| { b.iter(|| {
let _ = test::black_box( let _ = test::black_box(

View file

@ -9,7 +9,7 @@ use tf_demo_parser::{Demo, DemoParser, Stream};
fn bench_file(input_file: &str, b: &mut Bencher) { fn bench_file(input_file: &str, b: &mut Bencher) {
let file = fs::read(input_file).expect("Unable to read file"); let file = fs::read(input_file).expect("Unable to read file");
let demo = Demo::new(file); let demo = Demo::new(&file);
let stream: Stream = demo.get_stream(); let stream: Stream = demo.get_stream();
b.iter(|| { b.iter(|| {

36
benches/iai.rs Normal file
View file

@ -0,0 +1,36 @@
use iai::black_box;
use std::fs;
use tf_demo_parser::demo::message::Message;
use tf_demo_parser::demo::parser::MessageHandler;
use tf_demo_parser::{Demo, DemoParser, MessageType, ParserState};
struct AllMessages;
impl MessageHandler for AllMessages {
type Output = bool;
fn does_handle(_message_type: MessageType) -> bool {
true
}
fn handle_message(&mut self, message: &Message, _tick: u32) {
black_box(message);
}
fn into_output(self, _state: &ParserState) -> Self::Output {
black_box(true)
}
}
fn bench_all() {
let file = fs::read("data/gully.dem").expect("Unable to read file");
let demo = Demo::new(&file);
let stream = demo.get_stream();
black_box(
DemoParser::new_with_analyser(stream.clone(), AllMessages)
.parse()
.unwrap(),
);
}
iai::main!(bench_all);

View file

@ -41,7 +41,7 @@ impl MessageHandler for SendPropAnalyser {
fn flatten_bench(input_file: &str, b: &mut Bencher) { fn flatten_bench(input_file: &str, b: &mut Bencher) {
let file = fs::read(input_file).expect("Unable to read file"); let file = fs::read(input_file).expect("Unable to read file");
let demo = Demo::new(file); let demo = Demo::new(&file);
let stream = demo.get_stream(); let stream = demo.get_stream();
let (_, send_tables) = DemoParser::new_with_analyser(stream.clone(), SendPropAnalyser) let (_, send_tables) = DemoParser::new_with_analyser(stream.clone(), SendPropAnalyser)
.parse() .parse()