我们最近完成了对多播发送性能的分析。令人高兴的是,当我们在 Windows 和 Solaris 上测试不同的流量发送速率时,Java 和 C 的性能几乎相同。
但是,我们注意到发送多播消息的时间随着发送之间时间的增加而增加。我们调用发送的频率越高,完成发送调用所需的时间就越少。
该应用程序允许我们控制在调用发送之间等待的时间量,在下面您会看到随着数据包之间的延迟增加而增加的时间。当发送 1000 个数据包/秒(1 ms 等待时间)时,调用 send 只需要 13 微秒。在 1 个数据包/秒(1000 毫秒等待时间)下,该时间增加到 20 微秒。
Wait time (ms) us to send
0 8.67
1 12.97
10 13.06
100 18.03
1000 20.82
10000 57.20
我们在 Java 和 C 以及 Windows 和 Solaris 上都看到了这种现象。我们正在使用 Intel Pro 1000 双端口网卡的戴尔 1950 服务器上进行测试。微基准测试很难,尤其是在 Java 中,但我们认为这与 JITing 或 GC 无关。
我用于测试的 Java 代码和命令行位于:http ://www.moneyandsoftware.com/2009/09/18/multicast-send-performance/