commit e39f94bd25d2d2a09f0918b8d719bdaacde62e91 Author: Félix Baylac-Jacqué Date: Wed Nov 3 21:22:04 2021 +0100 Reference read Perf: $ time target/release/fast-fantoir FANTOIR0721 real 0m0,608s user 0m0,526s sys 0m0,081s $ time target/debug/fast-fantoir FANTOIR0721 real 0m11,664s user 0m11,549s sys 0m0,113s I highly suspect the release build to optimize out the useless file read, partially explaining the *MASSIVE* perf difference between the release build and the debug one. This gives up a baseline speed order though. We should probably be able to stay below 1 minute to generate the DB. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..2bc6de9 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "fast-fantoir" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..19a6c7c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "fast-fantoir" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..d075ab8 --- /dev/null +++ b/shell.nix @@ -0,0 +1,5 @@ +{ pkgs ? import {} }: + +pkgs.mkShell { + nativeBuildInputs = [ pkgs.rustc pkgs.cargo ]; +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e5558e0 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,19 @@ +use std::fs::File; +use std::io::{BufReader, BufRead}; + +fn main() -> std::io::Result<()> { + let fantoir_path = std::env::args().nth(1).unwrap(); + let file = match File::open(&fantoir_path) { + Err(err) => panic!("Cannot read file {}: {}", fantoir_path, err), + Ok(file) => file, + }; + let reader = BufReader::new(file); + + for line in reader.lines() { + match line { + Ok(_l) => (), + Err(err) => panic!("Cannot read line: {}", err), + } + }; + Ok(()) +} diff --git a/src/main.rs~ b/src/main.rs~ new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs~ @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}