-2

我们的高频交易应用程序是用 Java 开发的。我们需要将 8 个字节转换为双精度数,但转换速度必须非常快。请记住,我们的延迟低于 15 微秒,因此传统的 java 方法可能对我们不起作用。任何建议都会有所帮助。提前致谢

[编辑]

我们已经研究过一些方法,如字节缓冲区、nio 类、旋转方法(使用移位)等。但是,我想重申需要尽可能快地进行每个操作。使用这些形式的转换是昂贵的(即使它们作为独立的可能看起来更快)并且我们最终会在应用程序中引入延迟。我正在寻找开箱即用的想法(不限于 Java 提供的 API),任何人都可能有过使用不同格式(int、double、float 等)字节的经验。朝这个方向的一个想法可能是缓存双精度值并与接收到的字节进行比较,从而消除了转换的需要。

4

1 回答 1

1

您可能希望将 java.nio 用于 IO,在这种情况下,您可以在 ByteBuffer 和 DoubleBuffer 之间进行转换以完成您需要的操作。这将比自己玩弄转换逻辑要快得多。

这很简单:

ByteBuffer buffer.allocateDirect(<size>);
... add to the buffer ...
DoubleBuffer db = buffer.asDoubleBuffer();

瞧。

于 2015-01-07T07:14:21.927 回答