Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #31626
| From | j4n bur53 <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.java.programmer, comp.lang.prolog |
| Subject | Re: Easy exhaustive search with Java 8 Streams |
| Date | 2015-04-30 09:02 +0200 |
| Organization | albasani.net |
| Message-ID | <mhsk2b$tj7$1@news.albasani.net> (permalink) |
| References | <mhlvba$c1p$1@news.albasani.net> <mhnnqd$jrs$1@news.albasani.net> <mhq79v$95b$1@news.albasani.net> |
Cross-posted to 2 groups.
Thank you for sharing. Sebastian schrieb: > Am 28.04.2015 12:35, schrieb Jan Burse: >> Hi, >> >> How fast is this? Any figures? >> >> Bye >> > > I did a simple micro-benchmark with JMH 1.9.1 (available from Maven > Central) on my laptop computer, which is a quad-core machine with an > Intel i7 processor. > > Here are the measurement parameters: > > # JMH 1.9.1 (released 5 days ago) > # VM invoker: C:\Program Files\Java\jdk1.8.0_25\jre\bin\java.exe > # VM options: -Dfile.encoding=UTF-8 > # Warmup: 5 iterations, 1 s each > # Measurement: 25 iterations, 1 s each > # Timeout: 10 min per iteration > # Threads: 1 thread, will synchronize iterations > # Benchmark mode: Average time, time/op > > I measured the flatMap solution against the equivalent formulation with > eight nested for-loops. The flatMap solution is about half as fast. > Here's a representative measurement: > > > Benchmark Mode Cnt Score Error Units > measureFlatMpSearchPerformance avgt 25 662.377 ± 3.747 ms/op > measureForLoopSearchPerformance avgt 25 316.105 ± 3.823 ms/op > > > The nice thing abbout Streams is they are so easily parallelizable. > Just throw in a ".parallel()" in the first line like this: > > remove(DIGITS, 0).stream().parallel().flatMap( s -> > > leaving everything else unchanged, and the (parallel) flatMap version > becomes twice as fast as the (serial) for-loop version: > > > Benchmark Mode Cnt Score Error Units > measureFlatMpSearchPerformance avgt 25 168.278 ± 1.700 ms/op > measureForLoopSearchPerformance avgt 25 315.806 ± 2.878 ms/op > > > The effectiveness of parallelization of course depends on the > problem-specific properties of your search space. > > -- Sebastian
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Easy exhaustive search with Java 8 Streams Sebastian <news@seyweiler.dyndns.org> - 2015-04-27 20:32 +0200
Re: Easy exhaustive search with Java 8 Streams Jan Burse <janburse@fastmail.fm> - 2015-04-28 12:35 +0200
Re: Easy exhaustive search with Java 8 Streams Sebastian <news@seyweiler.dyndns.org> - 2015-04-29 11:12 +0200
Re: Easy exhaustive search with Java 8 Streams j4n bur53 <janburse@fastmail.fm> - 2015-04-30 09:02 +0200
Re: Easy exhaustive search with Java 8 Streams Sebastian <news@seyweiler.dyndns.org> - 2015-04-29 09:45 +0200
csiph-web