From 75ba4ac535c24d5831c27a71b4bd1f75b8dd5408 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Mar 2021 12:25:51 -0600 Subject: [PATCH] perf(config): Get small-string optimization --- Cargo.lock | 10 ++++++++++ Cargo.toml | 1 + src/config.rs | 24 ++++++++++++++---------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 150d6e7..16f0dcc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -724,6 +724,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1167388385b43067bd74f967def6c93b969284f14f41e2ab6035b715d9343215" +dependencies = [ + "serde", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1499,6 +1508,7 @@ dependencies = [ "human-panic", "ignore", "itertools 0.10.0", + "kstring", "log", "phf", "predicates", diff --git a/Cargo.toml b/Cargo.toml index 07d574d..44e8895 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,6 +57,7 @@ derive_setters = "0.1" itertools = "0.10" serde_json = "1.0" encoding = "0.2" +kstring = "1.0" [dev-dependencies] assert_fs = "1.0" diff --git a/src/config.rs b/src/config.rs index 064f23f..bc7a7e6 100644 --- a/src/config.rs +++ b/src/config.rs @@ -260,12 +260,12 @@ pub struct FileConfig { pub check_file: Option, pub ignore_hex: Option, pub identifier_leading_digits: Option, - pub identifier_leading_chars: Option, + pub identifier_leading_chars: Option, pub identifier_include_digits: Option, - pub identifier_include_chars: Option, + pub identifier_include_chars: Option, pub locale: Option, - pub extend_identifiers: HashMap, - pub extend_words: HashMap, + pub extend_identifiers: HashMap, + pub extend_words: HashMap, } impl FileConfig { @@ -277,9 +277,13 @@ impl FileConfig { check_file: Some(empty.check_file()), ignore_hex: Some(empty.ignore_hex()), identifier_leading_digits: Some(empty.identifier_leading_digits()), - identifier_leading_chars: Some(empty.identifier_leading_chars().to_owned()), + identifier_leading_chars: Some(kstring::KString::from_ref( + empty.identifier_leading_chars(), + )), identifier_include_digits: Some(empty.identifier_include_digits()), - identifier_include_chars: Some(empty.identifier_include_chars().to_owned()), + identifier_include_chars: Some(kstring::KString::from_ref( + empty.identifier_include_chars(), + )), locale: Some(empty.locale()), extend_identifiers: Default::default(), extend_words: Default::default(), @@ -303,13 +307,13 @@ impl FileConfig { self.identifier_leading_digits = Some(source); } if let Some(source) = source.identifier_leading_chars() { - self.identifier_leading_chars = Some(source.to_owned()); + self.identifier_leading_chars = Some(kstring::KString::from_ref(source)); } if let Some(source) = source.identifier_include_digits() { self.identifier_include_digits = Some(source); } if let Some(source) = source.identifier_include_chars() { - self.identifier_include_chars = Some(source.to_owned()); + self.identifier_include_chars = Some(kstring::KString::from_ref(source)); } if let Some(source) = source.locale() { self.locale = Some(source); @@ -317,12 +321,12 @@ impl FileConfig { self.extend_identifiers.extend( source .extend_identifiers() - .map(|(k, v)| (k.to_owned(), v.to_owned())), + .map(|(k, v)| (kstring::KString::from_ref(k), kstring::KString::from_ref(v))), ); self.extend_words.extend( source .extend_words() - .map(|(k, v)| (k.to_owned(), v.to_owned())), + .map(|(k, v)| (kstring::KString::from_ref(k), kstring::KString::from_ref(v))), ); }