Fix performance issues of sop armor and dearmor operations

This commit is contained in:
Paul Schaub 2022-06-15 23:14:09 +02:00
parent 57fbb469ea
commit 9cdea63ec4
2 changed files with 9 additions and 2 deletions

View File

@ -4,6 +4,7 @@
package org.pgpainless.sop; package org.pgpainless.sop;
import java.io.BufferedOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
@ -28,8 +29,11 @@ public class ArmorImpl implements Armor {
return new Ready() { return new Ready() {
@Override @Override
public void writeTo(OutputStream outputStream) throws IOException { public void writeTo(OutputStream outputStream) throws IOException {
ArmoredOutputStream armor = ArmoredOutputStreamFactory.get(outputStream); // By buffering the output stream, we can improve performance drastically
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
ArmoredOutputStream armor = ArmoredOutputStreamFactory.get(bufferedOutputStream);
Streams.pipeAll(data, armor); Streams.pipeAll(data, armor);
bufferedOutputStream.flush();
armor.close(); armor.close();
} }
}; };

View File

@ -4,6 +4,7 @@
package org.pgpainless.sop; package org.pgpainless.sop;
import java.io.BufferedOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
@ -22,7 +23,9 @@ public class DearmorImpl implements Dearmor {
@Override @Override
public void writeTo(OutputStream outputStream) throws IOException { public void writeTo(OutputStream outputStream) throws IOException {
Streams.pipeAll(decoder, outputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
Streams.pipeAll(decoder, bufferedOutputStream);
bufferedOutputStream.flush();
decoder.close(); decoder.close();
} }
}; };