~1/3 faster history writing with small caching

This commit is contained in:
dordsor21 2021-01-04 21:25:29 +00:00
parent 916c080310
commit 836b7a9750
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B

View File

@ -132,6 +132,9 @@ public abstract class FaweStreamChangeSet extends AbstractChangeSet {
int lx; int lx;
int ly; int ly;
int lz; int lz;
// 16*16*4
byte[] buff = new byte[1024];
int index = 0;
@Override @Override
public void write(OutputStream out, int x, int y, int z) throws IOException { public void write(OutputStream out, int x, int y, int z) throws IOException {
@ -144,13 +147,16 @@ public abstract class FaweStreamChangeSet extends AbstractChangeSet {
int x16 = (rx >> 8) & 0xF; int x16 = (rx >> 8) & 0xF;
int z16 = (rz >> 8) & 0xF; int z16 = (rz >> 8) & 0xF;
byte b4 = MathMan.pair16(x16, z16); byte b4 = MathMan.pair16(x16, z16);
out.write(b1); System.arraycopy(new byte[] {b1, b2, b3, b4}, 0, buff, index, 4);
out.write(b2); index += 4;
out.write(b3); if (index == 1024) {
out.write(b4); out.write(buff);
buff = new byte[1024];
index = 0;
}
} }
byte[] buffer = new byte[4]; final byte[] buffer = new byte[4];
@Override @Override
public int readX(FaweInputStream in) throws IOException { public int readX(FaweInputStream in) throws IOException {
@ -170,23 +176,30 @@ public abstract class FaweStreamChangeSet extends AbstractChangeSet {
}; };
} else { } else {
posDel = new FaweStreamPositionDelegate() { posDel = new FaweStreamPositionDelegate() {
final byte[] buffer = new byte[5];
int lx; int lx;
int ly; int ly;
int lz; int lz;
// 16*16*5
byte[] buff = new byte[1280];
int index = 0;
@Override @Override
public void write(OutputStream stream, int x, int y, int z) throws IOException { public void write(OutputStream out, int x, int y, int z) throws IOException {
int rx = -lx + (lx = x); int rx = -lx + (lx = x);
int ry = -ly + (ly = y); int ry = -ly + (ly = y);
int rz = -lz + (lz = z); int rz = -lz + (lz = z);
stream.write((rx) & 0xff); System.arraycopy(new byte[] {(byte) ((rx) & 0xff), (byte) (((rx) >> 8) & 0xff), (byte) ((rz) & 0xff),
stream.write(((rx) >> 8) & 0xff); (byte) (((rz) >> 8) & 0xff), (byte) ry}, 0, buff, index, 5);
stream.write((rz) & 0xff); index += 5;
stream.write(((rz) >> 8) & 0xff); if (index == 1280) {
stream.write((byte) ry); out.write(buff);
buff = new byte[1280];
index = 0;
}
} }
final byte[] buffer = new byte[5];
@Override @Override
public int readX(FaweInputStream is) throws IOException { public int readX(FaweInputStream is) throws IOException {
is.readFully(buffer); is.readFully(buffer);