我想有个算法目的是将Int分散到byte中去。
现在的算法是
参数(int i)
byte[] result=new byte[4];
result[0]=(byte)(0xff&i);
result[1]=(byte)((0xff00&i)>>8);
result[2]=(byte)((0xff0000&i)>>16);
result[3]=(byte)((0xff000000&i)>>24);
return result;
请问有没有更好的方法。
因为这个方法时不时会出现 0-70毫秒左右的延迟
------解决方案--------------------
“0-70毫秒左右的延迟”跟你这个算法本身,肯定没啥关系。。。
这个速度已经算是很快很快了。
估计是你的JVM在做GC吧,所以 Stop The World 了。
------解决方案--------------------
没有想到比这更快的方法了
让整数参与位运算,这是计算机最能干的事,很多指令都要解释成这些位运算指令,CPU才可以执行
除去给byte[]赋值的时间(不管什么算法此步都必不可少),只剩下4个位运算指令,现在的cpu至少都32位,所以人的四条语句基本在4个cpu周期就完成了。
一个cpu的周期时间 = 1 / CPU频率 比如 1/2.4GHZ = 。。。反正不知道有多小
------解决方案--------------------
你要知道 Windows 系统的计时精度只有 40ms!