Rate counter: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: changed output scaling.)
(Major refactoring done to exhibit java.util.stream usage)
Line 660: Line 660:
{{trans|JavaScript}}
{{trans|JavaScript}}
{{works with|Java|8}}
{{works with|Java|8}}
<lang java>import java.util.function.Consumer;
<lang java>import java.util.function.IntConsumer;
import java.util.stream.DoubleStream;


import static java.lang.System.nanoTime;
public class RateCounter {
import static java.util.stream.DoubleStream.generate;


import static java.lang.System.out;
public static void main(String[] args) {
for (double d : benchmark(10, x -> System.out.print(""), 10))
System.out.println(d);
}


public interface RateCounter {
static double[] benchmark(int n, Consumer<Integer> f, int arg) {
public static void main(final String... arguments) {
double[] timings = new double[n];
benchmark(
for (int i = 0; i < n; i++) {
10,
long time = System.nanoTime();
f.accept(arg);
x -> out.print(""),
10
timings[i] = System.nanoTime() - time;
}
)
return timings;
.forEach(out::println)
}
;
}

public static DoubleStream benchmark(
final int n,
final IntConsumer consumer,
final int argument
) {
return generate(() -> {
final long time = nanoTime();
consumer.accept(argument);
return nanoTime() - time;
})
.limit(n)
;
}
}</lang>
}</lang>


<pre>70469.0
<pre>81431.0
2047.0
3987.0
1169.0
3205.0
877.0
3081.0
877.0
3020.0
877.0
3101.0
877.0
3040.0
877.0
3102.0
877.0
3072.0
877.0</pre>
3060.0</pre>


=={{header|JavaScript}}==
=={{header|JavaScript}}==