问题描述
是否有可能指数基于字节的Java数组?
Is it possible to index a Java array based on a byte?
即。像
array[byte b] = x;
我从文件中的表现非常关键的应用程序它读取B(在上面的code),我不希望这种转换为int的开销。什么是实现这一目标的最佳途径?是否有性能下降的索引使用这种方法,而不是int的结果?
I have a very performance-critical application which reads b (in the code above) from a file, and I don't want the overhead of converting this to an int. What is the best way to achieve this? Is there a performance-decrease as a result of using this method of indexing rather than an int?
随着许多感谢,
Froskoy。
推荐答案
有没有开销转换这为int。在Java字节code级,所有的字节
是已 INT
秒。
There's no overhead for "converting this to an int." At the Java bytecode level, all byte
s are already int
s.
在任何情况下,这样做数组索引会自动上溯造型到 INT
反正。这些事情都不会提高性能,很多人会降低性能。只是用留下您的code的 INT
。
In any event, doing array indexing will automatically upcast to an int
anyway. None of these things will improve performance, and many will decrease performance. Just leave your code using an int
.
:
请注意,在表2.2大多数指令不具备整型字节,char和缩写形式。无对布尔类型的形式。编译器连接类型的文字值code加载字节和短期使用的符号扩展在编译时或运行时的值类型为int值的Java虚拟机指令。布尔类型和char的文字值的负载连接使用字面零扩展到在编译时或运行时类型为int值的说明codeD。同样,来自布尔型,字节,short和char值的阵列负载连接使用符号扩展或值零扩展为int类型值的Java虚拟机指令codeD。因此,在实际的布尔类型,字节,char和短值大部分操作通过计算int类型的值操作说明正确执行。
这篇关于爪哇 - 索引到数组字节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!