程序速度与内存使用情况

时间:2013-05-12 21:29:03

标签: c# int byte

我想知道我的节目速度。当我使用像Array.GetLength(1)这样的方法时,它总是返回int变量。或者当我插入单个数字时,编译器再次将其声明为int。我是否需要将它们转换为byte变量以降低内存使用量,否则会影响我的程序速度?

2 个答案:

答案 0 :(得分:4)

就计算机对它们执行的算术运算而言,两者都同样快。

但是如果您有大量数据,那么byte可以明显更快,纯粹是因为尺寸较小:

  1. 您的CPU缓存比byte个对象拥有更多int个对象。
  2. 使用byte个对象数组的每个元素比int个对象需要更少的内存带宽。如果您必须使用数据库或通过网络发送数据,那么使用带宽将成为真正的重大交易。
  3. 您的计算机RAM在开始使用硬盘作为虚拟内存之前可以容纳更多byte个值。如果您的数据集的大小int需要虚拟内存且byte不需要,那么byte将会快得多。
  4. 字节唯一真正的缺点是你最终编写的代码经常与int进行转换,即使这种转换最终在CPU上免费完成(使用字节传输来注册而不是一个字转移)

答案 1 :(得分:4)

方法变量在堆栈上(警告:迭代器块,捕获的变量等 - 但不要担心这些)。无论你做什么,堆栈都将是相同的大小。如果你谈论的是非常大小的值类型,那么显而易见的问题就是堆栈耗尽(可能通过ref缓解,但这与此问题无关) - 但更改 <从intbyte的em>本地方法变量 不会改变任何内容。实际上,IIRC的IL堆栈操作仅按照4或8字节值定义

基本上:这根本没用,所以不要担心。但它也不会甚至远程影响您的应用程序的性能或内存使用情况。如果您想知道的内容,请填写。