geforkt von Mirrors/FastAsyncWorldEdit
Use unsynchronized buffered OutputStream for history (#2127)
* Use unsychronized buffered OutputStream * Add note * Avoid synchronization on DataOutputStream#write
Dieser Commit ist enthalten in:
Ursprung
211e8034ff
Commit
8a3052683e
@ -20,6 +20,13 @@ public class FaweOutputStream extends DataOutputStream {
|
|||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// overwritten to un-synchronized
|
||||||
|
@Override
|
||||||
|
public void write(final int b) throws IOException {
|
||||||
|
out.write(b);
|
||||||
|
written++;
|
||||||
|
}
|
||||||
|
|
||||||
public void write(int b, int amount) throws IOException {
|
public void write(int b, int amount) throws IOException {
|
||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < amount; i++) {
|
||||||
write(b);
|
write(b);
|
||||||
|
@ -27,6 +27,7 @@ import com.sk89q.worldedit.internal.util.LogManagerCompat;
|
|||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.util.formatting.text.Component;
|
import com.sk89q.worldedit.util.formatting.text.Component;
|
||||||
import it.unimi.dsi.fastutil.io.FastBufferedInputStream;
|
import it.unimi.dsi.fastutil.io.FastBufferedInputStream;
|
||||||
|
import it.unimi.dsi.fastutil.io.FastBufferedOutputStream;
|
||||||
import net.jpountz.lz4.LZ4BlockInputStream;
|
import net.jpountz.lz4.LZ4BlockInputStream;
|
||||||
import net.jpountz.lz4.LZ4BlockOutputStream;
|
import net.jpountz.lz4.LZ4BlockOutputStream;
|
||||||
import net.jpountz.lz4.LZ4Compressor;
|
import net.jpountz.lz4.LZ4Compressor;
|
||||||
@ -40,7 +41,6 @@ import javax.imageio.ImageIO;
|
|||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@ -273,9 +273,12 @@ public class MainUtil {
|
|||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note: The returned stream is not thread safe.
|
||||||
|
*/
|
||||||
public static FaweOutputStream getCompressedOS(OutputStream os, int amount, int buffer) throws IOException {
|
public static FaweOutputStream getCompressedOS(OutputStream os, int amount, int buffer) throws IOException {
|
||||||
os.write((byte) 10 + amount);
|
os.write((byte) 10 + amount);
|
||||||
os = new BufferedOutputStream(os, buffer);
|
os = new FastBufferedOutputStream(os, buffer);
|
||||||
if (amount == 0) {
|
if (amount == 0) {
|
||||||
return new FaweOutputStream(os);
|
return new FaweOutputStream(os);
|
||||||
}
|
}
|
||||||
@ -296,7 +299,7 @@ public class MainUtil {
|
|||||||
os = new LZ4BlockOutputStream(os, buffer, factory.highCompressor());
|
os = new LZ4BlockOutputStream(os, buffer, factory.highCompressor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os = new BufferedOutputStream(os, buffer);
|
os = new FastBufferedOutputStream(os, buffer);
|
||||||
return new FaweOutputStream(os);
|
return new FaweOutputStream(os);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren