Я тестировал производительность передачи данных из программы в другую через сокет на одном компьютере, и скорость составляет 120 МБ / с , это нормально ?
Мои серверная и клиентская программы чрезвычайно просты.
Мой компьютер - AMD Athlon X2 4000+, оперативная память 4G DDR2 667 и windows xp sp3.
Мой друг сказал, что это медленно и должно быть быстрее. Но я не знаю, как я могу их улучшить, и есть ли другие библиотеки, которые я могу попробовать увеличить скорость?
ОБНОВЛЕНИЕ
Серверная и клиентская программы были на моем компьютере, a одиночный компьютер . Сетевая карта будет ограничивать скорость или нет?
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");
}
}
}
}