Cache tweaks

This commit is contained in:
Daniel Mills 2021-07-08 04:32:39 -04:00
parent e4ea01cfd2
commit 91f718f39d

View File

@ -5,20 +5,15 @@ import com.volmit.iris.scaffold.cache.Cache;
import com.volmit.iris.scaffold.stream.BasicStream;
import com.volmit.iris.scaffold.stream.ProceduralStream;
import java.util.concurrent.Semaphore;
// TODO BETTER CACHE SOLUTION
public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStream<T>
{
private final ProceduralStream<T> stream;
private final ConcurrentLinkedHashMap<Long, T> cache;
private final Semaphore locker;
public CachedStream2D(ProceduralStream<T> stream, int size)
{
super();
this.stream = stream;
locker = new Semaphore(30);
cache = new ConcurrentLinkedHashMap.Builder<Long, T>()
.initialCapacity(size)
.maximumWeightedCapacity(size)
@ -41,15 +36,7 @@ public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStrea
@Override
public T get(double x, double z)
{
try {
locker.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
long ck = Cache.key((int) x, (int) z);
T f = cache.compute(ck, (k, v) -> v != null ? v : stream.get(Cache.keyX(ck), Cache.keyZ(ck)));
locker.release();
return f;
return cache.compute(Cache.key((int) x, (int) z), (k, v) -> v != null ? v : stream.get((int)x, (int)z));
}
@Override