diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiDataCompressionMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiDataCompressionMode.java
index a6bccc9d9..9953ae594 100644
--- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiDataCompressionMode.java
+++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiDataCompressionMode.java
@@ -55,15 +55,14 @@ public enum EDhApiDataCompressionMode
*/
LZ4(1),
- ///**
- // * Decent speed and good compression.
- // *
- // * Read Speed: 9.31 MS / DTO
- // * Write Speed: 15.13 MS / DTO
- // * Compression ratio: 0.2606
- // */
- ////@DisallowSelectingViaConfigGui
- //Z_STD(2),
+ /**
+ * Decent speed and good compression.
+ *
+ * Read Speed: 9.31 MS / DTO
+ * Write Speed: 15.13 MS / DTO
+ * Compression ratio: 0.2606
+ */
+ Z_STD(2),
/**
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
index e7499c81d..9ff00afac 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core;
+import com.github.luben.zstd.ZstdOutputStream;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.render.renderer.generic.GenericRenderObjectFactory;
import com.seibel.distanthorizons.core.sql.DatabaseUpdater;
@@ -54,8 +55,9 @@ public class Initializer
{
// if any library isn't present in the jar its class
// will throw an error (not an exception)
- Class> fastCompressor = LZ4FrameOutputStream.class;
- Class> smallCompressor = XZOutputStream.class;
+ Class> lz4Compressor = LZ4FrameOutputStream.class;
+ Class> zstdCompressor = ZstdOutputStream.class;
+ Class> lzmaCompressor = XZOutputStream.class;
//Class> networking = ByteBuf.class;
Class> config = com.electronwill.nightconfig.core.Config.class;
Class> oldFastUtil = it.unimi.dsi.fastutil.longs.LongArrayList.class; // available in 8.2.1
@@ -63,30 +65,6 @@ public class Initializer
Class> sqliteJava = org.sqlite.SQLiteConnection.class;
Class> sqliteNative = org.sqlite.core.NativeDB.class;
- //// maybe these lines are needed to shade SQLite, James isn't sure.
- //// Although they never seemed to fail, which is a bit odd.
- //try
- //{
- // // needed by Forge to load the Java database connection
- // Class.forName("org.sqlite.JDBC");
- // LOGGER.info("loaded normal SQLITE");
- //}
- //catch (ClassNotFoundException e)
- //{
- // LOGGER.warn("normal: " + e.getMessage(), e);
- //}
- //
- //try
- //{
- // // needed by Forge to load the Java database connection
- // Class.forName("DistantHorizons.libraries.sqlite.JDBC");
- // LOGGER.info("loaded shaded SQLITE");
- //}
- //catch (ClassNotFoundException e)
- //{
- // LOGGER.warn("shaded: " + e.getMessage(), e);
- //}
-
boolean sqliteLoaded = SQLiteJDBCLoader.initialize();
if (!sqliteLoaded)
{
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
index 0ec97caea..efc126df6 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
@@ -1332,7 +1332,7 @@ public class Config
.build();
public static ConfigEntry dataCompression = new ConfigEntry.Builder()
- .set(EDhApiDataCompressionMode.LZMA2)
+ .set(EDhApiDataCompressionMode.Z_STD)
.comment(""
+ "What algorithm should be used to compress new LOD data? \n"
+ "This setting will only affect new or updated LOD data, \n"
@@ -1342,14 +1342,20 @@ public class Config
+ EDhApiDataCompressionMode.UNCOMPRESSED + " \n"
+ "Should only be used for testing, is worse in every way vs ["+EDhApiDataCompressionMode.LZ4+"].\n"
+ "Expected Compression Ratio: 1.0\n"
- + "Estimated average DTO read speed: 3.25 milliseconds\n"
- + "Estimated average DTO write speed: 5.99 milliseconds\n"
+ + "Estimated average DTO read speed: 6.09 milliseconds\n"
+ + "Estimated average DTO write speed: 6.01 milliseconds\n"
+ "\n"
+ EDhApiDataCompressionMode.LZ4 + " \n"
+ "A good option if you're CPU limited and have plenty of hard drive space.\n"
- + "Expected Compression Ratio: 0.26\n"
- + "Estimated average DTO read speed: 1.85 ms\n"
- + "Estimated average DTO write speed: 9.46 ms\n"
+ + "Expected Compression Ratio: 0.4513\n"
+ + "Estimated average DTO read speed: 3.25 ms\n"
+ + "Estimated average DTO write speed: 5.99 ms\n"
+ + "\n"
+ + EDhApiDataCompressionMode.Z_STD + " \n"
+ + "A good option if you're CPU limited and have plenty of hard drive space.\n"
+ + "Expected Compression Ratio: 0.2606\n"
+ + "Estimated average DTO read speed: 9.31 ms\n"
+ + "Estimated average DTO write speed: 15.13 ms\n"
+ "\n"
+ EDhApiDataCompressionMode.LZMA2 + " \n"
+ "Slow but very good compression.\n"
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
index f734df8f8..ab5f117fe 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
@@ -19,9 +19,10 @@
package com.seibel.distanthorizons.core.util.objects.dataStreams;
+import com.github.luben.zstd.RecyclingBufferPool;
+import com.github.luben.zstd.ZstdInputStream;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
import net.jpountz.lz4.LZ4FrameInputStream;
-//import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.tukaani.xz.ResettableArrayCache;
@@ -42,7 +43,6 @@ import java.io.*;
public class DhDataInputStream extends DataInputStream
{
private static final ThreadLocal LZMA_RESETTABLE_ARRAY_CACHE_GETTER = ThreadLocal.withInitial(() -> new ResettableArrayCache(new LzmaArrayCache()));
- //private static final ThreadLocal ZSTD_RESETTABLE_ARRAY_CACHE_GETTER = ThreadLocal.withInitial(() -> new ZstdArrayCache());
private static final Logger LOGGER = LogManager.getLogger();
@@ -61,8 +61,8 @@ public class DhDataInputStream extends DataInputStream
return stream;
case LZ4:
return new LZ4FrameInputStream(stream);
- //case Z_STD:
- // return new ZstdCompressorInputStream(stream, ZSTD_RESETTABLE_ARRAY_CACHE_GETTER.get());
+ case Z_STD:
+ return new ZstdInputStream(stream, RecyclingBufferPool.INSTANCE);
case LZMA2:
// using an array cache significantly reduces GC pressure
ResettableArrayCache arrayCache = LZMA_RESETTABLE_ARRAY_CACHE_GETTER.get();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
index d350a168d..422720f42 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
@@ -19,11 +19,11 @@
package com.seibel.distanthorizons.core.util.objects.dataStreams;
+import com.github.luben.zstd.ZstdOutputStream;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4FrameOutputStream;
import net.jpountz.xxhash.XXHashFactory;
-//import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.tukaani.xz.*;
@@ -55,8 +55,8 @@ public class DhDataOutputStream extends DataOutputStream
case UNCOMPRESSED:
return stream;
- //case Z_STD:
- // return new ZstdCompressorOutputStream(stream, 3, true, true);
+ case Z_STD:
+ return new ZstdOutputStream(stream, 3, true, true);
case LZ4:
return new LZ4FrameOutputStream(stream,
LZ4FrameOutputStream.BLOCKSIZE.SIZE_64KB, -1L,