【发布时间】:2012-04-10 08:43:35
【问题描述】:
我一直在测试读取服务器套接字输入流的性能。我发现阅读本身有大约 9000 纳秒(9 我们)的延迟。我怎样才能提高它的性能? 我已经尝试过 JAVA 默认缓冲区大小和比这更大的东西。但它的性能并没有太大变化。在这种情况下,我计算了来自客户端的每 1600 个样本。
大部分延迟都出现在这一行:
inputLine = in.readLine();
这里是读取线程的代码:
PrintWriter out = new PrintWriter(door.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(door.getInputStream()), 10240);
File file = new File(this.storageDirectory);
BufferedWriter save = new BufferedWriter(new FileWriter(file));
String inputLine = null;
while(Switch)
{
inputLine = in.readLine(); //I found ~9000 ns delay in this line.
save.write(inputLine);
if(iCounter==0)
StartTime = System.nanoTime();
iCounter++;
if(iCounter>=1600) //need to store them.
{
EndTime = System.nanoTime();
TimeTick = (EndTime - StartTime)/1600;
System.out.println("TimeTick is [ns]: " + TimeTick);
iCounter = 0;
}
}
结果如下:
TimeTick is [ns]: 9241
TimeTick is [ns]: 9941
TimeTick is [ns]: 6535
.....
这是没有'inputLine = in.readLine();'的结果
TimeTick is [ns]: 0
TimeTick is [ns]: 0
TimeTick is [ns]: 1
......
如何提高阅读性能?客户端只是根据请求发送随机双点值。
谢谢,
【问题讨论】: