added jvms
This commit is contained in:
1 parent
1fab7b30c1
commit
124d29a99d
2 files changed
+49
-54
No files matched your search
@@ -7,8 +7,8 @@
|
|||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
pname = "stream-examples";
|
pname = "stream-examples";
|
||||||
benchmark = pkgs.maven.buildMavenPackage {
|
benchmark = (jdk : pkgs.maven.buildMavenPackage {
|
||||||
mvnJdk = pkgs.jdk22;
|
mvnJdk = jdk;
|
||||||
pname = pname;
|
pname = pname;
|
||||||
version = "0.1.0";
|
version = "0.1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
@@ -16,21 +16,19 @@
|
|||||||
mvnHash = "sha256-G7PQd0Ul61m+C9S7OvAB6NkMxRM8AMYg5+1G0RQeXP8=";
|
mvnHash = "sha256-G7PQd0Ul61m+C9S7OvAB6NkMxRM8AMYg5+1G0RQeXP8=";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
ls -lrth
|
|
||||||
|
|
||||||
mkdir -p $out/bin $out/share/${pname}
|
mkdir -p $out/bin $out/share/${pname}
|
||||||
install -Dm644 target/stream-examples.jar $out/share/${pname}/${pname}.jar
|
install -Dm644 target/stream-examples.jar $out/share/${pname}/${pname}.jar
|
||||||
echo 'didier rocks!'
|
echo 'didier rocks!'
|
||||||
mkdir -p $out/bin $out/share/${pname}
|
mkdir -p $out/bin $out/share/${pname}
|
||||||
makeWrapper ${pkgs.jdk22}/bin/java $out/bin/${pname} \
|
makeWrapper ${jdk}/bin/java $out/bin/${pname} \
|
||||||
--add-flags "-jar $out/share/${pname}/${pname}.jar"
|
--add-flags "-jar $out/share/${pname}/${pname}.jar"
|
||||||
'';
|
'';
|
||||||
|
});
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages = {
|
packages = {
|
||||||
benchmark = benchmark;
|
benchmark-openjdk = benchmark pkgs.jdk22;
|
||||||
|
benchmark-graal = benchmark pkgs.graalvm-ce;
|
||||||
};
|
};
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
|
|||||||
@@ -1,15 +1,22 @@
|
|||||||
package com.alldressedprogramming;
|
package com.alldressedprogramming;
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.openjdk.jmh.annotations.*;
|
|
||||||
import org.openjdk.jmh.infra.Blackhole;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
import java.util.stream.LongStream;
|
import java.util.stream.LongStream;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import org.openjdk.jmh.annotations.Benchmark;
|
||||||
|
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||||
|
import org.openjdk.jmh.annotations.Fork;
|
||||||
|
import org.openjdk.jmh.annotations.Measurement;
|
||||||
|
import org.openjdk.jmh.annotations.Mode;
|
||||||
|
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||||
|
import org.openjdk.jmh.annotations.Scope;
|
||||||
|
import org.openjdk.jmh.annotations.State;
|
||||||
|
import org.openjdk.jmh.annotations.Warmup;
|
||||||
|
import org.openjdk.jmh.infra.Blackhole;
|
||||||
|
|
||||||
|
|
||||||
@State(Scope.Thread)
|
@State(Scope.Thread)
|
||||||
@@ -52,6 +59,38 @@ public class Main {
|
|||||||
|
|
||||||
final List<Album> albums = createFakeAlbums(10_000);
|
final List<Album> albums = createFakeAlbums(10_000);
|
||||||
|
|
||||||
|
public List<Album> getRecentAlbums(List<Album> albums) {
|
||||||
|
List<Album> ret = new ArrayList<>();
|
||||||
|
for (Album album : albums) {
|
||||||
|
if (album.releaseYear() > 2020) {
|
||||||
|
ret.add(album);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Song> getTaylorSwiftSongs(List<Album> albums) {
|
||||||
|
List<Song> ret = new ArrayList<>();
|
||||||
|
for (Album album : albums) {
|
||||||
|
for (Song song : album.songs()) {
|
||||||
|
if (song.composers().contains("taylor swift")) {
|
||||||
|
ret.add(song);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Stream<Album> getRecentAlbumsAsStream(Stream<Album> albums) {
|
||||||
|
return albums.filter(album -> album.releaseYear() > 2020);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Stream<Song> getTaylorSwiftSongsAsStream(Stream<Album> albums) {
|
||||||
|
return albums
|
||||||
|
.flatMap(album -> album.songs().stream())
|
||||||
|
.filter(song -> song.composers().contains("taylor swift"));
|
||||||
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void classical(Blackhole blackhole) {
|
public void classical(Blackhole blackhole) {
|
||||||
List<Song> newTaylorSwift = new ArrayList<>();
|
List<Song> newTaylorSwift = new ArrayList<>();
|
||||||
@@ -67,38 +106,6 @@ public class Main {
|
|||||||
blackhole.consume(newTaylorSwift);
|
blackhole.consume(newTaylorSwift);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<Album> getRecentAlbums(List<Album> albums){
|
|
||||||
List<Album> ret = new ArrayList<>();
|
|
||||||
for(Album album: albums){
|
|
||||||
if(album.releaseYear() > 2020){
|
|
||||||
ret.add(album);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Song> getTaylorSwiftSongs(List<Album> albums){
|
|
||||||
List<Song> ret = new ArrayList<>();
|
|
||||||
for(Album album: albums){
|
|
||||||
for(Song song: album.songs()){
|
|
||||||
if(song.composers().contains("taylor swift")){
|
|
||||||
ret.add(song);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Benchmark
|
|
||||||
public void brokenDownWithMethodsWith10Duplicates(Blackhole blackhole) {
|
|
||||||
for(int i = 0; i < 10; i++){
|
|
||||||
List<Album> recentAlbums = getRecentAlbums(albums);
|
|
||||||
List<Song> newTaylorSwift = getTaylorSwiftSongs(recentAlbums);
|
|
||||||
blackhole.consume(newTaylorSwift);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void brokenDownWithMethods(Blackhole blackhole) {
|
public void brokenDownWithMethods(Blackhole blackhole) {
|
||||||
List<Album> recentAlbums = getRecentAlbums(albums);
|
List<Album> recentAlbums = getRecentAlbums(albums);
|
||||||
@@ -106,16 +113,6 @@ public class Main {
|
|||||||
blackhole.consume(newTaylorSwift);
|
blackhole.consume(newTaylorSwift);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Stream<Album> getRecentAlbumsAsStream(Stream<Album> albums){
|
|
||||||
return albums.filter(album -> album.releaseYear() > 2020);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stream<Song> getTaylorSwiftSongsAsStream(Stream<Album> albums){
|
|
||||||
return albums
|
|
||||||
.flatMap(album -> album.songs().stream())
|
|
||||||
.filter(song -> song.composers().contains("taylor swift"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void brokenDownWithMethodsWithStreams(Blackhole blackhole) {
|
public void brokenDownWithMethodsWithStreams(Blackhole blackhole) {
|
||||||
Stream<Album> recentAlbums = getRecentAlbumsAsStream(albums.stream());
|
Stream<Album> recentAlbums = getRecentAlbumsAsStream(albums.stream());
|
||||||
|
|||||||
Reference in new issue
Block a user