-
Notifications
You must be signed in to change notification settings - Fork 603
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revamp implementation of parEvalMap, fixing numerous issues and increasing performance #2673
Conversation
roughly shows 5x performance boost in the benchmark benchmark/ jmh:run -i 5 -wi 3 -f1 -t1 fs2.benchmark.ParEvalMapBenchmark original [info] ParEvalMapBenchmark.evalMap 10 100 thrpt 5 16597,710 ± 5339,488 ops/s [info] ParEvalMapBenchmark.evalMap 10 10000 thrpt 5 263,320 ± 11,201 ops/s [info] ParEvalMapBenchmark.evalMap 100 100 thrpt 5 19980,999 ± 458,301 ops/s [info] ParEvalMapBenchmark.evalMap 100 10000 thrpt 5 319,355 ± 11,039 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 100 thrpt 5 127,434 ± 83,615 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 10000 thrpt 5 1,618 ± 0,104 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 100 thrpt 5 146,220 ± 9,165 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 10000 thrpt 5 1,661 ± 0,166 ops/s current [info] Benchmark (chunkSize) (size) Mode Cnt Score Error Units [info] ParEvalMapBenchmark.evalMap 10 100 thrpt 5 18323,931 ± 322,369 ops/s [info] ParEvalMapBenchmark.evalMap 10 10000 thrpt 5 262,852 ± 65,935 ops/s [info] ParEvalMapBenchmark.evalMap 100 100 thrpt 5 15407,024 ± 18788,319 ops/s [info] ParEvalMapBenchmark.evalMap 100 10000 thrpt 5 252,926 ± 5,626 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 100 thrpt 5 680,162 ± 35,416 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 10000 thrpt 5 8,157 ± 0,429 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 100 thrpt 5 717,905 ± 40,958 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 10000 thrpt 5 7,857 ± 0,469 ops/s |
24515bf
to
35eebfd
Compare
Seems, that the last commit fixes #2686 These are the logs:
|
So, I have rerun the benchmarks. I used the command
Since in this case we are concerned about Current Version (main):
New version (branch)
These results seem to indicate that the new implementation is faster with the |
Great, many thanks!
Current Version (main e7bcbb1):
New version(branch):
The performance improvement of |
|
66a8873
to
99c73f0
Compare
99c73f0
to
c4274ae
Compare
Resolves issues #2297, #2686, #2195
[info] ParEvalMapBenchmark.evalMap 10 100 thrpt 10 44379,438 ± 4398,278 ops/s [info] ParEvalMapBenchmark.evalMap 10 10000 thrpt 10 742,395 ± 27,320 ops/s [info] ParEvalMapBenchmark.evalMap 100 100 thrpt 10 50553,217 ± 3633,609 ops/s [info] ParEvalMapBenchmark.evalMap 100 10000 thrpt 10 962,177 ± 26,027 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 100 thrpt 10 212,248 ± 12,463 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 10000 thrpt 10 2,127 ± 0,137 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 100 thrpt 10 219,562 ± 2,204 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 10000 thrpt 10 2,203 ± 0,043 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 10 100 thrpt 10 1781,774 ± 22,137 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 10 10000 thrpt 10 17,999 ± 1,234 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 100 100 thrpt 10 1794,607 ± 16,252 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 100 10000 thrpt 10 19,297 ± 0,754 ops/s [info] Benchmark (chunkSize) (size) Mode Cnt Score Error Units [info] ParEvalMapBenchmark.evalMap 10 100 thrpt 10 49705,203 ± 852,694 ops/s [info] ParEvalMapBenchmark.evalMap 10 10000 thrpt 10 810,757 ± 44,645 ops/s [info] ParEvalMapBenchmark.evalMap 100 100 thrpt 10 56156,468 ± 1798,545 ops/s [info] ParEvalMapBenchmark.evalMap 100 10000 thrpt 10 968,758 ± 8,043 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 100 thrpt 10 1645,180 ± 158,254 ops/s [info] ParEvalMapBenchmark.parEvalMap10 10 10000 thrpt 10 16,816 ± 1,512 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 100 thrpt 10 1663,895 ± 111,153 ops/s [info] ParEvalMapBenchmark.parEvalMap10 100 10000 thrpt 10 18,461 ± 0,249 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 10 100 thrpt 10 1404,604 ± 17,503 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 10 10000 thrpt 10 16,798 ± 0,279 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 100 100 thrpt 10 1589,831 ± 20,365 ops/s [info] ParEvalMapBenchmark.parEvalMapUnordered10 100 10000 thrpt 10 16,640 ± 0,949 ops/s |
c4274ae
to
0c15b22
Compare
56b42ec
to
4cb3ad4
Compare
921460c
to
a63b61c
Compare
fc832a9
to
8a3bc7b
Compare
8a3bc7b
to
b6000cd
Compare
Test coverage looks great. Thoughts on moving all these tests to a new ParEvalMapSuite.scala? |
Resolves issues #2297, #2686, #2195, #2726