【发布时间】:2013-09-08 19:30:15
【问题描述】:
我有两种方法可以将 long 转换为字节数组。
for (int i = 0; i < 7; i++) {
data[pos + i] = (byte) (value >> (7- i - 1 << 3));
}
和
for (int i = 7; i >= 0; --i) {
data[p + i] = (byte)(newl & 0xff);
newl >>= 8;
}
这两种操作中哪一种效率更高?
【问题讨论】:
-
为什么需要知道?您是否完成了分析并发现这实际上是一个问题?如果不是,这是一个过早的优化。 如果您知道这是一个问题,只需尝试两者,看看哪个更好。
-
我没有分析过并且会这样做,但只是想知道执行的操作数?
-
顺便说一下,第一个是不正确的。它错过了一次迭代,并通过使用不正确的班次计数来“补偿”它。
-
判断哪个更有效的最佳方法可能是将它们都运行几百万次,然后测量每次需要多长时间。
标签: java byte bit-shift endianness