From 6809155a9195fa539071f3593f3c304ec89cfe89 Mon Sep 17 00:00:00 2001 From: ericgoebelbecker <@592Gbetz> Date: Fri, 15 Dec 2017 13:19:43 -0500 Subject: [PATCH 1/2] BAEL-1374 - same search in each loop. --- .../main/java/com/baeldung/array/SearchArrayTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java index 8b44138b32..345e1d48f3 100644 --- a/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java +++ b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java @@ -26,7 +26,7 @@ public class SearchArrayTest { int count = 1000; String[] strings = seedArray(count); for (int i = 0; i < count; i++) { - searchList(strings, "W"); + searchList(strings, "T"); } } @@ -37,7 +37,7 @@ public class SearchArrayTest { int count = 1000; String[] strings = seedArray(count); for (int i = 0; i < count; i++) { - searchSet(strings, "S"); + searchSet(strings, "T"); } } @@ -51,7 +51,7 @@ public class SearchArrayTest { List asList = Arrays.asList(strings); for (int i = 0; i < count; i++) { - asList.contains("W"); + asList.contains("T"); } } @@ -63,7 +63,7 @@ public class SearchArrayTest { String[] strings = seedArray(count); Set asSet = new HashSet<>(Arrays.asList(strings)); for (int i = 0; i < count; i++) { - asSet.contains("S"); + asSet.contains("T"); } } @@ -77,7 +77,7 @@ public class SearchArrayTest { long startTime = System.nanoTime(); for (int i = 0; i < count; i++) { - Arrays.binarySearch(strings, "A"); + Arrays.binarySearch(strings, "T"); } long duration = System.nanoTime() - startTime; //System.out.println("Binary search: " + duration / 10000); From e20d477733e5563afd006b91b835a5ea408ad54c Mon Sep 17 00:00:00 2001 From: ericgoebelbecker <@592Gbetz> Date: Fri, 15 Dec 2017 18:58:37 -0500 Subject: [PATCH 2/2] BAEL-1374 - reuse array --- .../com/baeldung/array/SearchArrayTest.java | 61 +++++++------------ 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java index 345e1d48f3..199ebdf036 100644 --- a/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java +++ b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java @@ -10,47 +10,40 @@ import java.util.concurrent.TimeUnit; @OutputTimeUnit(TimeUnit.MICROSECONDS) public class SearchArrayTest { + @State(Scope.Benchmark) + public static class SearchData { + static int count = 1000; + static String[] strings = seedArray(1000); + } + + @Benchmark public void searchArrayLoop() { - - int count = 1000; - String[] strings = seedArray(count); - for (int i = 0; i < count; i++) { - searchLoop(strings, "T"); + for (int i = 0; i < SearchData.count; i++) { + searchLoop(SearchData.strings, "T"); } } @Benchmark public void searchArrayAllocNewList() { - - int count = 1000; - String[] strings = seedArray(count); - for (int i = 0; i < count; i++) { - searchList(strings, "T"); + for (int i = 0; i < SearchData.count; i++) { + searchList(SearchData.strings, "T"); } } @Benchmark public void searchArrayAllocNewSet() { - - int count = 1000; - String[] strings = seedArray(count); - for (int i = 0; i < count; i++) { - searchSet(strings, "T"); + for (int i = 0; i < SearchData.count; i++) { + searchSet(SearchData.strings, "T"); } } @Benchmark public void searchArrayReuseList() { - - int count = 1000; - String[] strings = seedArray(count); - - List asList = Arrays.asList(strings); - - for (int i = 0; i < count; i++) { + List asList = Arrays.asList(SearchData.strings); + for (int i = 0; i < SearchData.count; i++) { asList.contains("T"); } } @@ -58,11 +51,8 @@ public class SearchArrayTest { @Benchmark public void searchArrayReuseSet() { - - int count = 1000; - String[] strings = seedArray(count); - Set asSet = new HashSet<>(Arrays.asList(strings)); - for (int i = 0; i < count; i++) { + Set asSet = new HashSet<>(Arrays.asList(SearchData.strings)); + for (int i = 0; i < SearchData.count; i++) { asSet.contains("T"); } } @@ -70,18 +60,10 @@ public class SearchArrayTest { @Benchmark public void searchArrayBinarySearch() { - - int count = 1000; - String[] strings = seedArray(count); - Arrays.sort(strings); - - long startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - Arrays.binarySearch(strings, "T"); + Arrays.sort(SearchData.strings); + for (int i = 0; i < SearchData.count; i++) { + Arrays.binarySearch(SearchData.strings, "T"); } - long duration = System.nanoTime() - startTime; - //System.out.println("Binary search: " + duration / 10000); - } private boolean searchList(String[] strings, String searchString) { @@ -101,8 +83,7 @@ public class SearchArrayTest { return false; } - private String[] seedArray(int length) { - + private static String[] seedArray(int length) { String[] strings = new String[length]; Random random = new Random(); for (int i = 0; i < length; i++)