save 12ms in when checking if cached writer can be used
This commit is contained in:
@@ -6,6 +6,7 @@ import java.util.Comparator;
|
||||
public class PdbWriterByTimeAsc implements Comparator<PdbWriter> {
|
||||
|
||||
public static final PdbWriterByTimeAsc INSTANCE = new PdbWriterByTimeAsc();
|
||||
public static final Comparator<PdbWriter> REVERSED = INSTANCE.reversed();
|
||||
|
||||
@Override
|
||||
public int compare(final PdbWriter o1, final PdbWriter o2) {
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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<PdbWriter> 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<PdbWriter> chooseBestMatchingWriter(final List<PdbWriter> writers, final OffsetDateTime date) {
|
||||
final List<PdbWriter> candidateWriters = filter(writers, writer -> {
|
||||
final OffsetDateTime offsetTime = writer.getDateOffset();
|
||||
return !date.isBefore(offsetTime);
|
||||
});
|
||||
final List<PdbWriter> sortedCanditateWriters = sorted(candidateWriters, PdbWriterByTimeAsc.INSTANCE.reversed());
|
||||
final Optional<PdbWriter> 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) {
|
||||
|
||||
Reference in New Issue
Block a user