日期:2014-05-19  浏览次数:20785 次

int转byte[]优化算法

我想有个算法目的是将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!