Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #31626

Re: Easy exhaustive search with Java 8 Streams

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.

Show all headers | View raw


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


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