我想就我的算法的一部分提出意见/建议。
ByteBuffer bb = ByteBuffer.allocate(8);
bb.putLong(rs.getLong(index));//retrieve long from db (unsigned INT)
byte[] tmp = new byte[4];
bb.position(4);
bb.get(tmp);
(Inet4Address) InetAddress.getByAddress(tmp);
VS
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt((int) rs.getLong(index));//retrieve long from db (unsigned INT)
bb.flip();
byte[] tmp = new byte[4];
bb.get(tmp);
(Inet4Address) InetAddress.getByAddress(tmp);
基本上我想知道在投射中是否存在性能差异,或者使用更大的ByteBuffer是否更好。
谢谢,问候,
马立克
答案 0 :(得分:3)
基本上我想知道在投射中是否存在性能差异,或者使用更大的ByteBuffer是否更好。
与分配新的ByteBuffer
并调用一些方法相比,Casting“便宜”。
我不完全确定你要做什么,但也许一个简单的转换权就可以做到这一点?例如,这段代码:
long l = rs.getLong(index);
InetAddress.getByAddress(new byte[] { (byte) ((l & 0xFF000000) >> 24),
(byte) ((l & 0x00FF0000) >> 16),
(byte) ((l & 0x0000FF00) >> 8),
(byte) ((l & 0x000000FF) >> 0)});