1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

tr: use FnvHashMap instead of default HashMap backed by SipHasher. FnvHashMap is much faster for small inputs like intergers, and we literally have a hashmap with chars as keys

This commit is contained in:
Sergey "Shnatsel" Davidoff 2017-05-26 18:49:39 +03:00
parent 334c64ae26
commit 44cf7798bd
2 changed files with 4 additions and 3 deletions

View file

@ -10,6 +10,7 @@ path = "tr.rs"
[dependencies]
getopts = "*"
bit-set = "*"
fnv = "*"
[dependencies.uucore]
path = "../uucore"

View file

@ -14,6 +14,7 @@
extern crate bit_set;
extern crate getopts;
extern crate fnv;
#[macro_use]
extern crate uucore;
@ -21,7 +22,7 @@ extern crate uucore;
use bit_set::BitSet;
use getopts::Options;
use std::io::{stdin, stdout, BufRead, BufWriter, Write};
use std::collections::HashMap;
use fnv::FnvHashMap;
use expand::ExpandSet;
@ -65,8 +66,7 @@ fn delete(set: ExpandSet, complement: bool) {
}
fn tr<'a>(set1: ExpandSet<'a>, mut set2: ExpandSet<'a>) {
//let mut map = VecMap::new();
let mut map = HashMap::new();
let mut map = FnvHashMap::default();
let stdin = stdin();
let mut locked_stdin = stdin.lock();
let mut buffered_stdout = BufWriter::new(stdout());