我想知道我的节目速度。当我使用像Array.GetLength(1)
这样的方法时,它总是返回int
变量。或者当我插入单个数字时,编译器再次将其声明为int
。我是否需要将它们转换为byte
变量以降低内存使用量,否则会影响我的程序速度?
答案 0 :(得分:4)
就计算机对它们执行的算术运算而言,两者都同样快。
但是如果您有大量数据,那么byte
可以明显更快,纯粹是因为尺寸较小:
byte
个对象拥有更多int
个对象。byte
个对象数组的每个元素比int
个对象需要更少的内存带宽。如果您必须使用数据库或通过网络发送数据,那么使用带宽将成为真正的重大交易。byte
个值。如果您的数据集的大小int
需要虚拟内存且byte
不需要,那么byte
将会快得多。字节唯一真正的缺点是你最终编写的代码经常与int
进行转换,即使这种转换最终在CPU上免费完成(使用字节传输来注册而不是一个字转移)
答案 1 :(得分:4)
方法变量在堆栈上(警告:迭代器块,捕获的变量等 - 但不要担心这些)。无论你做什么,堆栈都将是相同的大小。如果你谈论的是非常大小的值类型,那么显而易见的问题就是堆栈耗尽(可能通过ref
缓解,但这与此问题无关) - 但更改 <从int
到byte
的em>本地方法变量 不会改变任何内容。实际上,IIRC的IL堆栈操作仅按照4或8字节值定义 。
基本上:这根本没用,所以不要担心。但它也不会甚至远程影响您的应用程序的性能或内存使用情况。如果您想知道是的内容,请填写。