9月 062019
此场景通常是用在网络通讯中,解决数据头的时候
一般我们会约定头两个字节为某个固定值用于判断是否是有效的数据
如下代码中我们用两种方法做对比,一种是用移位操作将字节头换成int型然后比如
一种是把byte数组中的每一位进行比较
通过比较对比,比较byte数组中的每一位速度会更快。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public static void main(String[] args){ byte[] bytes = new byte[]{1, 2, 3, 4}; long counter = 0; long start = System.currentTimeMillis(); while (true){ counter++; if(counter > 1000000000){ break; } int s = (short) ((bytes[0] << 24) + (bytes[1] << 16) + (bytes[2] << 8) + bytes[1]); if(s == 1){ bytes[0] = 1; } } long end = System.currentTimeMillis(); System.out.println(bytes[0]); System.out.println("转int用时:" + String.valueOf(end - start)); counter = 0; start = System.currentTimeMillis(); while (true){ counter++; if(counter > 1000000000){ break; } if (bytes[0] == 1 && bytes[1] == 1 && bytes[2] == 1 && bytes[3] == 1){ bytes[0] = 1; } } end = System.currentTimeMillis(); System.out.println(bytes[0]); System.out.println("byte数组每一位比较用时:" + String.valueOf(end - start)); } |
下面是测试结果:
1 2 |
转int用时:634 byte数组每一位比较用时:299 |
Sorry, the comment form is closed at this time.