From 85108f3519d3226a44794ebb09f5993700046a87 Mon Sep 17 00:00:00 2001 From: gilice <104317939+gilice@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:53:30 +0100 Subject: [PATCH] muxml: switch to FxHash ... for about 5% performance improvement --- Cargo.lock | 7 +++++++ Cargo.toml | 1 + src/backend/muxml/mod.rs | 6 ++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c68e2c0..10456b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -257,6 +257,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "scoreman" version = "1.0.0" @@ -267,6 +273,7 @@ dependencies = [ "itertools", "itoa", "midly", + "rustc-hash", "yansi", ] diff --git a/Cargo.toml b/Cargo.toml index 7c3101b..0a313b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ clap = { version = "4.5.4", features = ["derive"] } itertools = "0.14.0" itoa = "1.0.11" midly = "0.5.3" +rustc-hash = "2.1.1" yansi = "1.0.1" [dev-dependencies] diff --git a/src/backend/muxml/mod.rs b/src/backend/muxml/mod.rs index caa04cb..34bf24d 100644 --- a/src/backend/muxml/mod.rs +++ b/src/backend/muxml/mod.rs @@ -16,6 +16,7 @@ use formatters::{ MUXML_INCOMPLETE_DOC_PRELUDE, }; use fretboard::get_fretboard_note2; +use rustc_hash::FxBuildHasher; use std::collections::HashMap; use std::time::Duration; @@ -54,7 +55,8 @@ pub enum Muxml2TabElement { impl Muxml2TabElement { fn write_muxml( - &self, parsed: &ParseResult, buf: &mut A, note_properties: &HashMap, + &self, parsed: &ParseResult, buf: &mut A, + note_properties: &HashMap, ) -> std::fmt::Result { match self { Muxml2TabElement::Rest(mut x) => { @@ -192,7 +194,7 @@ fn gen_muxml2( debugln!("muxml2: reserved {}", cap); let mut slur_cnt = 0; let mut slide_count = 0; - let mut note_properties: HashMap = HashMap::new(); + let mut note_properties: HashMap = HashMap::default(); for measure_idx in 0..number_of_measures { traceln!("Muxml2: processing measure {}", measure_idx); let ticks_in_measure = rlen(&parsed.measures[measure_idx].data_range) / 6; // see assumption 2