$ ./tdriver big1.txt big2.txt big3.txt big4.txt big5.txt big6.txt >f.tmp tdriver (fixed string length=6) start use std::map big1.txt: nlines=3515200 (7.492 seconds) big2.txt: nlines=3515200 (9.953 seconds) big3.txt: nlines=3515200 (11.089 seconds) big4.txt: nlines=3515200 (10.696 seconds) big5.txt: nlines=3515200 (11.449 seconds) big6.txt: nlines=3515200 (11.765 seconds) $ cmp f.tmp good.tmp $ ./tdriver big1.txt big2.txt big3.txt big4.txt big5.txt big6.txt >f.tmp tdriver (fixed string length=6) start use std::unordered_map big1.txt: nlines=3515200 (2.134 seconds) big2.txt: nlines=3515200 (2.859 seconds) big3.txt: nlines=3515200 (2.244 seconds) big4.txt: nlines=3515200 (3.666 seconds) big5.txt: nlines=3515200 (2.184 seconds) big6.txt: nlines=3515200 (1.882 seconds) $ cmp f.tmp good.tmp $ ./tdriver big1.txt big2.txt big3.txt big4.txt big5.txt big6.txt >f.tmp tdriver (fixed string length=6) start use phmap::parallel_flat_hash_map big1.txt: nlines=3515200 (0.597 seconds) big2.txt: nlines=3515200 (1.08 seconds) big3.txt: nlines=3515200 (1.604 seconds) big4.txt: nlines=3515200 (0.795 seconds) big5.txt: nlines=3515200 (2.317 seconds) big6.txt: nlines=3515200 (0.894 seconds) $ cmp f.tmp good.tmp $ ./tdriver big1.txt big2.txt big3.txt big4.txt big5.txt big6.txt >f.tmp tdriver (fixed string length=6) start use boost::unordered_map big1.txt: nlines=3515200 (2.1 seconds) big2.txt: nlines=3515200 (2.037 seconds) big3.txt: nlines=3515200 (1.327 seconds) big4.txt: nlines=3515200 (2.935 seconds) big5.txt: nlines=3515200 (1.436 seconds) big6.txt: nlines=3515200 (1.553 seconds) $ cmp f.tmp good.tmp UPDATE: $ ./tdriver big1.txt big2.txt big3.txt big4.txt big5.txt big6.txt >f.tmp tdriver (fixed string length=6) start use ankerl::unordered_dense::map big1.txt: nlines=3515200 (0.994 seconds) big2.txt: nlines=3515200 (1.11 seconds) big3.txt: nlines=3515200 (0.767 seconds) big4.txt: nlines=3515200 (1.784 seconds) big5.txt: nlines=3515200 (0.866 seconds) big6.txt: nlines=3515200 (0.772 seconds) $ cmp f.tmp good.tmp