From 41bdd708697929dc19f433417797ddad4533bd3e Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 6 Mar 2020 16:04:10 +0000 Subject: Let the implementation decide what kind of warmup is needed. --- .../main/java/com/yahoo/compress/Compressor.java | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'vespajlib/src/main/java/com/yahoo/compress') 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; -- cgit v1.2.3