我有一个可疑的编码实践。
当我需要迭代计数限制在32000
以下的一小部分项时,我会对i变量类型使用Int16
,而不是Integer
。我这样做是因为我认为使用Int16
比使用成熟的Integer
更有效。
我说错了吗?使用Int16
与使用Integer
之间是否没有有效的性能差异?我是否应该停止使用Int16
,只使用Integer
来满足我所有的计数/迭代需求?
发布于 2008-09-24 18:47:55
Int16实际上可能效率较低,因为用于字存取的x86指令比用于双字存取的指令占用更多的空间。这将取决于JIT做什么。但不管怎样,当它在迭代中用作变量时,它几乎肯定不会更有效。
发布于 2008-09-24 18:46:55
事实恰恰相反。
32 (或64)位整数比int16快。通常,原生数据类型是最快的。
如果你想让你的数据结构尽可能的精简,Int16是很好的选择。这节省了空间,并可能提高性能。
发布于 2008-09-24 18:49:51
在现代硬件上,任何性能差异都将是如此微小,以至于无论出于何种意图和目的,它都不会产生任何差异。尝试编写几个测试工具,并运行它们几百次,取平均循环完成时间,您就会明白我的意思。
如果你的资源非常有限,从存储的角度来看,这可能是有意义的-嵌入式系统具有很小的堆栈,为慢速网络(例如GPRS等)设计的有线协议,等等。
https://stackoverflow.com/questions/129023
复制相似问题