Я тестировал производительность чтения потока ввода сокета сервера.Я обнаружил, что само чтение имеет задержку ~ 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
......
Как улучшить производительность чтения?Клиент просто отправляет случайные значения двойной точки по запросу.
Спасибо,