$ NUM_THREADS=6 ./llil4vec2 big?.txt big?.txt big?.txt >f4vec.tmp llil4vec2 (fixed string length=6) start use OpenMP use boost sort get properties time : 1.9719 secs sort properties time : 2.27273 secs vector reduce time : 0.201546 secs vector stable sort time : 0.500317 secs write stdout time : 0.721466 secs total time : 5.66814 secs $ NUM_THREADS=6 ./llil4map big?.txt big?.txt big?.txt >f4map.tmp llil4map start use phmap::parallel_flat_hash_map use OpenMP use boost sort get properties time : 5.33992 secs finish merging time : 2.20465 secs vector stable sort time : 1.60465 secs write stdout time : 1.21258 secs total time : 10.3622 secs $ diff f4map.tmp f4vec.tmp $ ls -l f4map.tmp f4vec.tmp -rw-r--r-- 183490874 Feb 1 09:38 f4map.tmp -rw-r--r-- 183490874 Feb 1 09:37 f4vec.tmp $ ls -l big*.txt -rw-r--r-- 31636800 Jan 16 18:26 big1.txt -rw-r--r-- 31636800 Jan 16 18:26 big2.txt -rw-r--r-- 31636800 Jan 16 18:26 big3.txt -rw-r--r-- 31636800 Feb 1 09:33 big4.txt -rw-r--r-- 31636800 Feb 1 09:31 big5.txt -rw-r--r-- 31636800 Feb 1 09:31 big6.txt