From 69218b67107f879fb7f1e4cc98f7f59f30a2cc94 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sat, 22 Aug 2020 11:27:06 -0400 Subject: [PATCH] Faster --- .../iris/gen/ParallelChunkGenerator.java | 2 + .../com/volmit/iris/object/IrisDimension.java | 47 ++++++++++++++----- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/volmit/iris/gen/ParallelChunkGenerator.java b/src/main/java/com/volmit/iris/gen/ParallelChunkGenerator.java index 3cf5b2226..080e96126 100644 --- a/src/main/java/com/volmit/iris/gen/ParallelChunkGenerator.java +++ b/src/main/java/com/volmit/iris/gen/ParallelChunkGenerator.java @@ -44,6 +44,8 @@ public abstract class ParallelChunkGenerator extends DimensionChunkGenerator { e.close(); } + + Iris.info("Thread Count changed to " + tc); } protected abstract void onGenerateColumn(int cx, int cz, int wx, int wz, int x, int z, AtomicSliver sliver, BiomeMap biomeMap, boolean sampled); diff --git a/src/main/java/com/volmit/iris/object/IrisDimension.java b/src/main/java/com/volmit/iris/object/IrisDimension.java index c36482dfb..18830c866 100644 --- a/src/main/java/com/volmit/iris/object/IrisDimension.java +++ b/src/main/java/com/volmit/iris/object/IrisDimension.java @@ -7,6 +7,7 @@ import org.bukkit.util.BlockVector; import com.volmit.iris.Iris; import com.volmit.iris.gen.ContextualChunkGenerator; +import com.volmit.iris.gen.ParallelChunkGenerator; import com.volmit.iris.gen.PostBlockChunkGenerator; import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.noise.CNG; @@ -15,11 +16,15 @@ import com.volmit.iris.util.B; import com.volmit.iris.util.ChunkPosition; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; +import com.volmit.iris.util.Form; +import com.volmit.iris.util.IrisLock; import com.volmit.iris.util.IrisPostBlockFilter; +import com.volmit.iris.util.J; import com.volmit.iris.util.KList; import com.volmit.iris.util.KSet; import com.volmit.iris.util.MaxNumber; import com.volmit.iris.util.MinNumber; +import com.volmit.iris.util.O; import com.volmit.iris.util.RNG; import com.volmit.iris.util.RegistryListBiome; import com.volmit.iris.util.RegistryListRegion; @@ -608,12 +613,15 @@ public class IrisDimension extends IrisRegistrant return r; } - public ChunkPosition getParallaxSize(ContextualChunkGenerator g) + public ChunkPosition getParallaxSize(ParallelChunkGenerator g) { return parallaxSize.aquire(() -> { - int x = 0; - int z = 0; + Iris.info("Calculating the Parallax Size in Parallel"); + O xg = new O<>(); + O zg = new O<>(); + xg.set(0); + zg.set(0); KSet objects = new KSet<>(); KList r = getAllRegions(g); @@ -627,21 +635,36 @@ public class IrisDimension extends IrisRegistrant } } + IrisLock t = new IrisLock("t"); + Iris.verbose("Checking sizes for " + Form.f(objects.size()) + " referenced objects."); + + int tc = g.getThreads(); + g.changeThreadCount(64); for(String i : objects) { - try + g.getAccelerant().queue("tx-psize", () -> { - BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i)); - x = bv.getBlockX() > x ? bv.getBlockX() : x; - z = bv.getBlockZ() > z ? bv.getBlockZ() : z; - } + try + { + BlockVector bv = IrisObject.sampleSize(g.getData().getObjectLoader().findFile(i)); + t.lock(); + xg.set(bv.getBlockX() > xg.get() ? bv.getBlockX() : xg.get()); + zg.set(bv.getBlockZ() > zg.get() ? bv.getBlockZ() : zg.get()); + t.unlock(); + } - catch(Throwable e) - { + catch(Throwable e) + { - } + } + }); } + g.getAccelerant().waitFor("tx-psize"); + g.changeThreadCount(tc); + int x = xg.get(); + int z = zg.get(); + for(IrisDepositGenerator i : getDeposits()) { int max = i.getMaxDimension(); @@ -673,7 +696,7 @@ public class IrisDimension extends IrisRegistrant z = (Math.max(z, 16) + 16) >> 4; x = x % 2 == 0 ? x + 1 : x; z = z % 2 == 0 ? z + 1 : z; - Iris.info("Parallax Size: " + x + ", " + z); + Iris.info("Done! Parallax Size: " + x + ", " + z); return new ChunkPosition(x, z); }); }