Я тестировал производительность передачи данных из программы на другой поверх сокета на одном компьютере, а скорость 120 Мбайт/с, это нормально?
Мои серверные и клиентские программы очень просты.
И мой компьютер - AMD Athlon X2 4000+, 4G DDR2 667, с окнами xp sp3.
Мой друг сказал, что это медленно, и должно быть быстрее. Но я не знаю, как я могу улучшить их, или есть ли другие библиотеки, которые я могу попытаться получить более высокую скорость?
UPDATE
Серверные и клиентские программы были на моем собственном компьютере, на одном компьютере. Сетевая карта ограничит скорость или нет?
Server.java
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleServer {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(6666);
Socket socket = server.accept();
OutputStream output = socket.getOutputStream();
byte[] bytes = new byte[10 * 1024]; // 10K
for (int i = 0; i < bytes.length; i++) { bytes[i] = 12; } // fill the bytes
// send them again and again
while (true) {
output.write(bytes);
}
}
}
Client.java
public class SimpleClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 6666);
InputStream input = socket.getInputStream();
long total = 0;
long start = System.currentTimeMillis();
byte[] bytes = new byte[10240]; // 10K
// read the data again and again
while (true) {
int read = input.read(bytes);
total += read;
long cost = System.currentTimeMillis() - start;
if (cost > 0 && System.currentTimeMillis() % 1000 == 0) {
System.out.println("Read " + total + " bytes, speed: " + (total / (1024.0*1024)) / (cost / 1000.0) + " MB/s");
}
}
}
}