int转byte[]优化算法

a132225 2012-05-15 07:30:52

我想有个算法目的是将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毫秒左右的延迟
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a132225 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你要知道 Windows 系统的计时精度只有 40ms!
[/Quote]

恩,这个回答不能解决我的问题,呵呵呵
a132225 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

没有想到比这更快的方法了

让整数参与位运算,这是计算机最能干的事,很多指令都要解释成这些位运算指令,CPU才可以执行

除去给byte[]赋值的时间(不管什么算法此步都必不可少),只剩下4个位运算指令,现在的cpu至少都32位,所以人的四条语句基本在4个cpu周期就完成了。

一个cpu的周期时间 = 1 / CPU频率 比如 1/2.4GHZ = 。。。反正不知道有多小
[/Quote]

恩,解释的很详细呵呵,
a132225 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

“0-70毫秒左右的延迟”跟你这个算法本身,肯定没啥关系。。。

这个速度已经算是很快很快了。

估计是你的JVM在做GC吧,所以 Stop The World 了。
[/Quote]

加gc直接飙到100+,要做服务器,这个速度完全跟不上。而且JAVA对内存的操作不太灵活。现在要换语言了
  • 打赏
  • 举报
回复
你要知道 Windows 系统的计时精度只有 40ms!
oO临时工Oo 2012-05-15
  • 打赏
  • 举报
回复
没有想到比这更快的方法了

让整数参与位运算,这是计算机最能干的事,很多指令都要解释成这些位运算指令,CPU才可以执行

除去给byte[]赋值的时间(不管什么算法此步都必不可少),只剩下4个位运算指令,现在的cpu至少都32位,所以人的四条语句基本在4个cpu周期就完成了。

一个cpu的周期时间 = 1 / CPU频率 比如 1/2.4GHZ = 。。。反正不知道有多小
MiceRice 2012-05-15
  • 打赏
  • 举报
回复
“0-70毫秒左右的延迟”跟你这个算法本身,肯定没啥关系。。。

这个速度已经算是很快很快了。

估计是你的JVM在做GC吧,所以 Stop The World 了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧