mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Cache tweaks
This commit is contained in:
parent
e4ea01cfd2
commit
91f718f39d
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user