Linux 上のローカル。20k メッセージで約 10 秒です。私の推測では、私の Java は悪く、Python は問題ありません。
py クライアント:
def scan(self, msg):
try:
print 'begin scan'
HOST = 'localhost'
PORT = 33000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT));
s.sendall(msg)
data = s.recv(1024)
s.close()
print 'Received', repr(data)
except Exception, e:
print "error: " + str(e)
Java サーバー:
ServerSocket service = new ServerSocket(33000);
while(true) {
debug("Begin waiting for connection");
//this spins
Socket connection = service.accept();
debug("Connection received from " + connection.getInetAddress().getHostName());
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
ScanResultsHeader results = new ScanResultsHeader();
Scanner scanner = new Scanner();
results = scanner.scan("scannerfake@gmail.com", "123", in);
と
public ScanResultsHeader スキャン (文字列 userEmail、文字列 imapRetrievalId、BufferedInputStream mimeEmail) は、IOException、FileNotFoundException、MimeException、ScannerException {
//how fast would it be to just slurp up stream?
debug("slurp!");
String slurp = IOUtils.toString(mimeEmail);
debug("slurped " + slurp.length() + " characters");
slurp = slurp.toLowerCase();
debug("lc'ed it");
//...
私の推測では、入力ストリームを間違ってジャグリングしています。1 つのキャッチは、"BufferedInputStream mimeEmail" 署名が API スキャンが使用しているライブラリに必要であるため、最終的にはそのフォームに到達する必要があることです。しかし、文字列を丸呑みするという単純な行為にばかげたほど時間がかかることに気付いたので、すでに何か間違ったことをしています。