From 0f2fcc3c9c5d3339fded39496d2908560bce8be0 Mon Sep 17 00:00:00 2001 From: ahr Date: Sat, 6 Jan 2018 08:40:58 +0100 Subject: [PATCH] extract long_to_string converter --- .../org/lucares/recommind/logs/LongUtils.java | 24 ++++++++++++++++++ .../lucares/recommind/logs/ScatterPlot.java | 25 ++----------------- 2 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 pdb-plotting/src/main/java/org/lucares/recommind/logs/LongUtils.java diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/LongUtils.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/LongUtils.java new file mode 100644 index 0000000..0493d08 --- /dev/null +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/LongUtils.java @@ -0,0 +1,24 @@ +package org.lucares.recommind.logs; + +public class LongUtils { + + private static final int INT_TO_STRING_CACHE_SIZE= 1000; + private static final String[] INT_TO_STRING; + static { + + INT_TO_STRING = new String[INT_TO_STRING_CACHE_SIZE]; + + for (int i = 0; i < INT_TO_STRING_CACHE_SIZE; i++){ + INT_TO_STRING[i] = String.valueOf(i); + } + } + + public static String longToString(final long value){ + // using pre-generated strings reduces memory allocation by up to 25% + + if (value < INT_TO_STRING_CACHE_SIZE){ + return INT_TO_STRING[(int) value]; + } + return String.valueOf(value); + } +} diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/ScatterPlot.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/ScatterPlot.java index 55e0cee..6a8ca6c 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/ScatterPlot.java +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/ScatterPlot.java @@ -36,18 +36,7 @@ public class ScatterPlot implements ConcretePlotter { private static final Logger LOGGER = LoggerFactory.getLogger(ScatterPlot.class); private static final Logger METRICS_LOGGER = LoggerFactory.getLogger("org.lucares.metrics.plotter.scatter"); - - - private static final int INT_TO_STRING_CACHE_SIZE= 1000; - private static final String[] INT_TO_STRING; - static { - - INT_TO_STRING = new String[INT_TO_STRING_CACHE_SIZE]; - - for (int i = 0; i < INT_TO_STRING_CACHE_SIZE; i++){ - INT_TO_STRING[i] = String.valueOf(i); - } - } + private final PerformanceDb db; private final Path tmpBaseDir; @@ -200,7 +189,7 @@ public class ScatterPlot implements ConcretePlotter { if (fromEpochMilli <= epochMilli && epochMilli <= toEpochMilli) { long value = entry.getValue(); - final String stringValue = longToString(value); + final String stringValue = LongUtils.longToString(value); final String formattedDate; if (useMillis){ @@ -229,15 +218,5 @@ public class ScatterPlot implements ConcretePlotter { METRICS_LOGGER.debug("wrote {} values to csv in: {}ms (ignored {} values) use millis: {}, grouping={}, file={}", count, (System.nanoTime() - start) / 1_000_000.0, ignoredValues, Boolean.toString(useMillis), groupResult.getGroupedBy(),dataFile); return new CsvSummary(dataFile, count, maxValue, aggregator.getAggregatedData()); } - - private static String longToString(final long value){ - // using pre-generated strings reduces memory allocation by up to 25% - - if (value < INT_TO_STRING_CACHE_SIZE){ - return INT_TO_STRING[(int) value]; - } - return String.valueOf(value); - } - }