From 754e21075a2b67ab6df1b2aa6201d2506f07cd42 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Aug 2016 13:10:33 +0200 Subject: Add parallel letter --- .../parallel_letter_frequency_test.go | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 go/parallel-letter-frequency/parallel_letter_frequency_test.go (limited to 'go/parallel-letter-frequency/parallel_letter_frequency_test.go') diff --git a/go/parallel-letter-frequency/parallel_letter_frequency_test.go b/go/parallel-letter-frequency/parallel_letter_frequency_test.go new file mode 100644 index 0000000..99fed05 --- /dev/null +++ b/go/parallel-letter-frequency/parallel_letter_frequency_test.go @@ -0,0 +1,58 @@ +package letter + +import ( + "reflect" + "testing" +) + +// In the separate file frequency.go, you are given a function, Frequency(), +// to sequentially count letter frequencies in a single text. +// Perform this exercise on parallelism using Go concurrency features. +// Make concurrent calls to Frequency and combine results to obtain the answer. + +func TestConcurrentFrequency(t *testing.T) { + seq := Frequency(euro + dutch + us) + con := ConcurrentFrequency([]string{euro, dutch, us}) + if !reflect.DeepEqual(con, seq) { + t.Fatal("ConcurrentFrequency wrong result") + } +} + +var ( + euro = `Freude schöner Götterfunken +Tochter aus Elysium, +Wir betreten feuertrunken, +Himmlische, dein Heiligtum! +Deine Zauber binden wieder +Was die Mode streng geteilt; +Alle Menschen werden Brüder, +Wo dein sanfter Flügel weilt.` + dutch = `Wilhelmus van Nassouwe +ben ik, van Duitsen bloed, +den vaderland getrouwe +blijf ik tot in den dood. +Een Prinse van Oranje +ben ik, vrij, onverveerd, +den Koning van Hispanje +heb ik altijd geëerd.` + us = `O say can you see by the dawn's early light, +What so proudly we hailed at the twilight's last gleaming, +Whose broad stripes and bright stars through the perilous fight, +O'er the ramparts we watched, were so gallantly streaming? +And the rockets' red glare, the bombs bursting in air, +Gave proof through the night that our flag was still there; +O say does that star-spangled banner yet wave, +O'er the land of the free and the home of the brave?` +) + +func BenchmarkSequentialFrequency(b *testing.B) { + for i := 0; i < b.N; i++ { + Frequency(euro + dutch + us) + } +} + +func BenchmarkConcurrentFrequency(b *testing.B) { + for i := 0; i < b.N; i++ { + ConcurrentFrequency([]string{euro, dutch, us}) + } +} -- cgit v1.2.3