From 58bb64c80a3e42744ec01332ae74570ad31f176a Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 29 Dec 2016 19:33:45 +0100 Subject: [PATCH] save 12ms in when checking if cached writer can be used --- .../performance/db/PdbWriterByTimeAsc.java | 1 + .../lucares/performance/db/PerformanceDb.java | 4 ---- .../lucares/performance/db/TagsToFile.java | 22 +++++++++++++------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/performanceDb/src/main/java/org/lucares/performance/db/PdbWriterByTimeAsc.java b/performanceDb/src/main/java/org/lucares/performance/db/PdbWriterByTimeAsc.java index 3028f0d..d5cae4c 100644 --- a/performanceDb/src/main/java/org/lucares/performance/db/PdbWriterByTimeAsc.java +++ b/performanceDb/src/main/java/org/lucares/performance/db/PdbWriterByTimeAsc.java @@ -6,6 +6,7 @@ import java.util.Comparator; public class PdbWriterByTimeAsc implements Comparator { public static final PdbWriterByTimeAsc INSTANCE = new PdbWriterByTimeAsc(); + public static final Comparator REVERSED = INSTANCE.reversed(); @Override public int compare(final PdbWriter o1, final PdbWriter o2) { diff --git a/performanceDb/src/main/java/org/lucares/performance/db/PerformanceDb.java b/performanceDb/src/main/java/org/lucares/performance/db/PerformanceDb.java index ad6c430..ca41639 100644 --- a/performanceDb/src/main/java/org/lucares/performance/db/PerformanceDb.java +++ b/performanceDb/src/main/java/org/lucares/performance/db/PerformanceDb.java @@ -59,7 +59,6 @@ public class PerformanceDb implements AutoCloseable { final int blocksize = 10000; long count = 0; - final double durationInManager = 0; try { long start = System.nanoTime(); @@ -75,10 +74,7 @@ public class PerformanceDb implements AutoCloseable { final Tags tags = entry.getTags(); final OffsetDateTime date = entry.getDate(); - final long s = System.nanoTime(); final PdbWriter writer = tagsToFile.getWriter(date, tags); - final long e = System.nanoTime(); - Stats.duration += (e - s) / 1_000_000.0; writer.write(entry); count++; diff --git a/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java b/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java index 9d2a85f..ee9ed12 100644 --- a/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java +++ b/performanceDb/src/main/java/org/lucares/performance/db/TagsToFile.java @@ -6,6 +6,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.time.OffsetDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -160,7 +161,10 @@ public class TagsToFile implements CollectionUtils, AutoCloseable { final PdbWriter result; final WriterCache writersForTags = getOrInit(tags); + final long s = System.nanoTime(); final Optional optionalWriter = chooseBestMatchingWriter(writersForTags.getWriters(), date); + final long e = System.nanoTime(); + Stats.duration += (e - s) / 1_000_000.0; if (optionalWriter.isPresent()) { result = optionalWriter.get(); @@ -183,13 +187,17 @@ public class TagsToFile implements CollectionUtils, AutoCloseable { } private Optional chooseBestMatchingWriter(final List writers, final OffsetDateTime date) { - final List candidateWriters = filter(writers, writer -> { - final OffsetDateTime offsetTime = writer.getDateOffset(); - return !date.isBefore(offsetTime); - }); - final List sortedCanditateWriters = sorted(candidateWriters, PdbWriterByTimeAsc.INSTANCE.reversed()); - final Optional optionalFirst = findFirst(sortedCanditateWriters); - return optionalFirst; + + Collections.sort(writers, PdbWriterByTimeAsc.REVERSED); + + for (final PdbWriter pdbWriter : writers) { + final OffsetDateTime offsetTime = pdbWriter.getDateOffset(); + + if (!date.isBefore(offsetTime)) { + return Optional.of(pdbWriter); + } + } + return Optional.empty(); } private WriterCache getOrInit(final Tags tags) {