$ ls -l bible*
-rw-rw-r-- 1 a a 44044450 Mar 14 17:09 bible2.txt
-rw-rw-r-- 1 a a 4404445 Mar 14 17:08 bible.txt
$ for i in `seq 1 24`; do echo -n "$i: "; ./wordcount -p $i bible.txt; done
1: Done: 820742 words in 0.458876 seconds
2: Done: 820742 words in 0.334103 seconds
3: Done: 820742 words in 0.267302 seconds
4: Done: 820742 words in 0.241759 seconds
5: Done: 820722 words in 0.224769 seconds
6: Done: 820742 words in 0.293846 seconds
7: Done: 820742 words in 0.365714 seconds
8: Done: 820742 words in 0.396215 seconds
9: Done: 820742 words in 0.340283 seconds
10: Done: 820742 words in 0.338947 seconds
11: Done: 820702 words in 0.430823 seconds
12: Done: 820742 words in 0.327284 seconds
13: Done: 820742 words in 0.483451 seconds
14: Done: 820742 words in 0.265444 seconds
15: Done: 820715 words in 0.337210 seconds
16: Done: 820742 words in 0.531193 seconds
17: Done: 820742 words in 0.457809 seconds
18: Done: 820742 words in 0.411667 seconds
19: Done: 820729 words in 0.302328 seconds
20: Done: 820697 words in 0.383019 seconds
21: Done: 820703 words in 0.534184 seconds
22: Done: 820742 words in 0.497216 seconds
23: Done: 820697 words in 0.342722 seconds
24: Done: 820715 words in 0.391646 seconds
$ for i in `seq 1 24`; do echo -n "$i: "; ./wordcount -p $i bible2.txt; done
1: Done: 8207420 words in 4.828265 seconds
2: Done: 8207420 words in 2.922690 seconds
3: Done: 8207420 words in 2.367519 seconds
4: Done: 8207386 words in 2.275688 seconds
5: Done: 8207420 words in 2.024210 seconds
6: Done: 8207420 words in 2.289805 seconds
7: Done: 8207420 words in 2.894400 seconds
8: Done: 8207420 words in 3.827817 seconds
9: Done: 8207407 words in 2.925551 seconds
10: Done: 8207420 words in 3.114902 seconds
11: Done: 8207379 words in 3.028556 seconds
12: Done: 8207407 words in 2.844268 seconds
13: Done: 8207420 words in 2.995080 seconds
14: Done: 8207420 words in 2.854469 seconds
15: Done: 8207420 words in 2.573538 seconds
16: Done: 8207407 words in 3.983480 seconds
17: Done: 8207420 words in 3.761097 seconds
18: Done: 8207420 words in 2.909477 seconds
19: Done: 8207407 words in 3.725225 seconds
20: Done: 8207420 words in 2.615825 seconds
21: Done: 8207403 words in 3.260078 seconds
22: Done: 8207420 words in 2.750152 seconds
23: Done: 8207407 words in 2.505290 seconds
24: Done: 8207420 words in 2.844379 seconds
Do the results look slightly off to you? They should -- the number of
words counted is not always the same, which means there's a race
condition in your code. You create a lot of goroutines, some 31103 in
all for bible.txt. This means that some goroutines may not have had a
chance to count their words before you terminate the reducer. You must
either keep track of how many you've created and how many have
finished their job or, better yet, use a fixed number of goroutines to
do the work and tie that to the number of processors.