From 124d29a99df53199f255f4016cc3b2d3dc6851b4 Mon Sep 17 00:00:00 2001 From: didier amyot Date: Tue, 10 Sep 2024 15:40:03 -0400 Subject: [PATCH] added jvms --- flake.nix | 14 ++- .../java/com/alldressedprogramming/Main.java | 89 +++++++++---------- 2 files changed, 49 insertions(+), 54 deletions(-) diff --git a/flake.nix b/flake.nix index f1241f7..f85ef55 100644 --- a/flake.nix +++ b/flake.nix @@ -7,8 +7,8 @@ let pkgs = nixpkgs.legacyPackages.${system}; pname = "stream-examples"; - benchmark = pkgs.maven.buildMavenPackage { - mvnJdk = pkgs.jdk22; + benchmark = (jdk : pkgs.maven.buildMavenPackage { + mvnJdk = jdk; pname = pname; version = "0.1.0"; src = ./.; @@ -16,21 +16,19 @@ mvnHash = "sha256-G7PQd0Ul61m+C9S7OvAB6NkMxRM8AMYg5+1G0RQeXP8="; installPhase = '' - ls -lrth - mkdir -p $out/bin $out/share/${pname} install -Dm644 target/stream-examples.jar $out/share/${pname}/${pname}.jar echo 'didier rocks!' 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" ''; - - }; + }); in { packages = { - benchmark = benchmark; + benchmark-openjdk = benchmark pkgs.jdk22; + benchmark-graal = benchmark pkgs.graalvm-ce; }; devShell = pkgs.mkShell { buildInputs = with pkgs; [ diff --git a/src/main/java/com/alldressedprogramming/Main.java b/src/main/java/com/alldressedprogramming/Main.java index 4c5c865..713b72e 100644 --- a/src/main/java/com/alldressedprogramming/Main.java +++ b/src/main/java/com/alldressedprogramming/Main.java @@ -1,15 +1,22 @@ 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.List; import java.util.Random; +import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; import java.util.stream.LongStream; 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) @@ -52,6 +59,38 @@ public class Main { final List albums = createFakeAlbums(10_000); + public List getRecentAlbums(List albums) { + List ret = new ArrayList<>(); + for (Album album : albums) { + if (album.releaseYear() > 2020) { + ret.add(album); + } + } + return ret; + } + + public List getTaylorSwiftSongs(List albums) { + List 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 getRecentAlbumsAsStream(Stream albums) { + return albums.filter(album -> album.releaseYear() > 2020); + } + + public Stream getTaylorSwiftSongsAsStream(Stream albums) { + return albums + .flatMap(album -> album.songs().stream()) + .filter(song -> song.composers().contains("taylor swift")); + } + @Benchmark public void classical(Blackhole blackhole) { List newTaylorSwift = new ArrayList<>(); @@ -67,38 +106,6 @@ public class Main { blackhole.consume(newTaylorSwift); } - - public List getRecentAlbums(List albums){ - List ret = new ArrayList<>(); - for(Album album: albums){ - if(album.releaseYear() > 2020){ - ret.add(album); - } - } - return ret; - } - - public List getTaylorSwiftSongs(List albums){ - List 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 recentAlbums = getRecentAlbums(albums); - List newTaylorSwift = getTaylorSwiftSongs(recentAlbums); - blackhole.consume(newTaylorSwift); - } - } - @Benchmark public void brokenDownWithMethods(Blackhole blackhole) { List recentAlbums = getRecentAlbums(albums); @@ -106,16 +113,6 @@ public class Main { blackhole.consume(newTaylorSwift); } - public Stream getRecentAlbumsAsStream(Stream albums){ - return albums.filter(album -> album.releaseYear() > 2020); - } - - public Stream getTaylorSwiftSongsAsStream(Stream albums){ - return albums - .flatMap(album -> album.songs().stream()) - .filter(song -> song.composers().contains("taylor swift")); - } - @Benchmark public void brokenDownWithMethodsWithStreams(Blackhole blackhole) { Stream recentAlbums = getRecentAlbumsAsStream(albums.stream());