aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/compress
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-03-06 16:04:10 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-03-06 16:04:10 +0000
commit41bdd708697929dc19f433417797ddad4533bd3e (patch)
tree690dac61c2a6e4a63be1f835e9fb0cc7a710321d /vespajlib/src/main/java/com/yahoo/compress
parent32f2ffc16a9fce1f35a47879aa3473661aa32228 (diff)
Let the implementation decide what kind of warmup is needed.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/compress')
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/Compressor.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
index ee003734d1a..77297ebcb50 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
@@ -3,8 +3,12 @@ package com.yahoo.compress;
import net.jpountz.lz4.LZ4Compressor;
import net.jpountz.lz4.LZ4Factory;
+import net.jpountz.lz4.LZ4FastDecompressor;
+import net.jpountz.lz4.LZ4SafeDecompressor;
+
import java.util.Arrays;
import java.util.Optional;
+import java.util.Random;
/**
* Compressor which can compress and decompress in various formats.
@@ -148,6 +152,28 @@ public class Compressor {
}
}
+ public long warmup(double seconds) {
+ byte [] input = new byte[0x4000];
+ new Random().nextBytes(input);
+ long timeDone = System.nanoTime() + (long)(seconds*1000000000);
+ long compressedBytes = 0;
+ byte [] decompressed = new byte [input.length];
+ LZ4FastDecompressor fastDecompressor = factory.fastDecompressor();
+ LZ4SafeDecompressor safeDecompressor = factory.safeDecompressor();
+ LZ4Compressor fastCompressor = factory.fastCompressor();
+ LZ4Compressor highCompressor = factory.highCompressor();
+ while (System.nanoTime() < timeDone) {
+ byte [] compressedFast = fastCompressor.compress(input);
+ byte [] compressedHigh = highCompressor.compress(input);
+ fastDecompressor.decompress(compressedFast, decompressed);
+ fastDecompressor.decompress(compressedHigh, decompressed);
+ safeDecompressor.decompress(compressedFast, decompressed);
+ safeDecompressor.decompress(compressedHigh, decompressed);
+ compressedBytes += compressedFast.length + compressedHigh.length;
+ }
+ return compressedBytes;
+ }
+
public static class Compression {
private final CompressionType compressionType;