在使用Socket进行数据传输中, 最重要的一个注意项,是我们需要关注 网络自己顺序, 本文使用了3中字节顺序转换方式,他们的执行效率有较大差别,如果你的系统比较繁忙的话,不妨考虑更有效的代码(原文链接 http://ddbiz.com/?p=119)
1. IPAddress
使用 IPAddress.HotToNetworkOrder 可以对整形进行字节顺序的转换
2. 指针操作, 如:
unsafe{
int dest =0;
byte * bs = (byte*) &src, bd = &dest;
bd[0] = bs[3]; bd[1] = bs[2]; bd[2] = bs[1]; bd[3] = bs[0];
}
3. 位移操作
dest = ( (src & 0xFF000000) >> 24) |
( (src & 0x00FF0000) >> 8) |
( (src & 0x0000FF00) << 8) |
( (src & 0x000000FF) << 24)
通过测试(见测试代码), 指针操作为最快的一种,其次就是位移操作,这两种运算方式都比 IPAddress的方式要快一倍以上.
***** test.test.Efficiency
IPAddress used: 223 ms
byte* used: 110 ms
shift used: 122 ms
***** test.test.Efficiency
IPAddress used: 219 ms
byte* used: 110 ms
shift used: 122 ms
***** test.test.Efficiency
IPAddress used: 221 ms
byte* used: 108 ms
shift used: 121 ms
***** test.test.Efficiency
IPAddress used: 181 ms
byte* used: 147 ms
shift used: 160 ms
***** test.test.Efficiency
IPAddress used: 290 ms
byte* used: 140 ms
shift used: 170 ms