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 class PdbWriterByTimeAsc implements Comparator<PdbWriter> {
|
||||||
|
|
||||||
public static final PdbWriterByTimeAsc INSTANCE = new PdbWriterByTimeAsc();
|
public static final PdbWriterByTimeAsc INSTANCE = new PdbWriterByTimeAsc();
|
||||||
|
public static final Comparator<PdbWriter> REVERSED = INSTANCE.reversed();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(final PdbWriter o1, final PdbWriter o2) {
|
public int compare(final PdbWriter o1, final PdbWriter o2) {
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ public class PerformanceDb implements AutoCloseable {
|
|||||||
|
|
||||||
final int blocksize = 10000;
|
final int blocksize = 10000;
|
||||||
long count = 0;
|
long count = 0;
|
||||||
final double durationInManager = 0;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
long start = System.nanoTime();
|
long start = System.nanoTime();
|
||||||
@@ -75,10 +74,7 @@ public class PerformanceDb implements AutoCloseable {
|
|||||||
final Tags tags = entry.getTags();
|
final Tags tags = entry.getTags();
|
||||||
final OffsetDateTime date = entry.getDate();
|
final OffsetDateTime date = entry.getDate();
|
||||||
|
|
||||||
final long s = System.nanoTime();
|
|
||||||
final PdbWriter writer = tagsToFile.getWriter(date, tags);
|
final PdbWriter writer = tagsToFile.getWriter(date, tags);
|
||||||
final long e = System.nanoTime();
|
|
||||||
Stats.duration += (e - s) / 1_000_000.0;
|
|
||||||
|
|
||||||
writer.write(entry);
|
writer.write(entry);
|
||||||
count++;
|
count++;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -160,7 +161,10 @@ public class TagsToFile implements CollectionUtils, AutoCloseable {
|
|||||||
final PdbWriter result;
|
final PdbWriter result;
|
||||||
final WriterCache writersForTags = getOrInit(tags);
|
final WriterCache writersForTags = getOrInit(tags);
|
||||||
|
|
||||||
|
final long s = System.nanoTime();
|
||||||
final Optional<PdbWriter> optionalWriter = chooseBestMatchingWriter(writersForTags.getWriters(), date);
|
final Optional<PdbWriter> optionalWriter = chooseBestMatchingWriter(writersForTags.getWriters(), date);
|
||||||
|
final long e = System.nanoTime();
|
||||||
|
Stats.duration += (e - s) / 1_000_000.0;
|
||||||
|
|
||||||
if (optionalWriter.isPresent()) {
|
if (optionalWriter.isPresent()) {
|
||||||
result = optionalWriter.get();
|
result = optionalWriter.get();
|
||||||
@@ -183,13 +187,17 @@ public class TagsToFile implements CollectionUtils, AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Optional<PdbWriter> chooseBestMatchingWriter(final List<PdbWriter> writers, final OffsetDateTime date) {
|
private Optional<PdbWriter> chooseBestMatchingWriter(final List<PdbWriter> writers, final OffsetDateTime date) {
|
||||||
final List<PdbWriter> candidateWriters = filter(writers, writer -> {
|
|
||||||
final OffsetDateTime offsetTime = writer.getDateOffset();
|
Collections.sort(writers, PdbWriterByTimeAsc.REVERSED);
|
||||||
return !date.isBefore(offsetTime);
|
|
||||||
});
|
for (final PdbWriter pdbWriter : writers) {
|
||||||
final List<PdbWriter> sortedCanditateWriters = sorted(candidateWriters, PdbWriterByTimeAsc.INSTANCE.reversed());
|
final OffsetDateTime offsetTime = pdbWriter.getDateOffset();
|
||||||
final Optional<PdbWriter> optionalFirst = findFirst(sortedCanditateWriters);
|
|
||||||
return optionalFirst;
|
if (!date.isBefore(offsetTime)) {
|
||||||
|
return Optional.of(pdbWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
private WriterCache getOrInit(final Tags tags) {
|
private WriterCache getOrInit(final Tags tags) {
|
||||||
|
|||||||
Reference in New Issue
Block a user