您如何命名变量对应用程序的内存使用情况有影响吗?

时间:2009-03-13 00:31:04

标签: memory variables

声明变量名称,其名称的长度对应用程序的总内存有多大影响(如果有的话)?无论如何还有最大长度吗?或者我们可以随意详细说明我们的变量(和实例)吗?

7 个答案:

答案 0 :(得分:21)

实际上取决于语言。

如果您使用的是C ++或C,则没有任何影响。

如果您使用的是解释性语言,则会传递源代码,因此会产生巨大影响。

如果您使用的编译语言编译为中间语言(如Java或任何.NET语言),则通常变量名称,类名称,方法名称等都是IL的一部分。拥有更长的方法名称会产生影响。但是,如果您稍后通过混淆器,则会消失,因为混淆器会将所有内容重命名为(通常)非常短的名称。这就是混淆经常会对性能产生影响的原因。

但是,我强烈建议使用长的描述性变量/方法/类名。这使得您的代码易于理解,可维护且易读 - 从长远来看,这远远超过任何轻微的性能。益处。

答案 1 :(得分:5)

它对编译语言没有影响。

答案 2 :(得分:0)

在编译语言中,几乎肯定不会;一切都成为符号表中的符号。在解释型语言中,答案也是否定的,有一些非常罕见的例外(例如,在某些旧版本的Python中会有区别)。

答案 3 :(得分:0)

MSVC将变量名截断为255个字符。变量名长度对编译的代码大小没有影响。

答案 4 :(得分:0)

正如其他人所说,变量名称在编译语言中消失。我相信.Net中的局部变量名可能会被丢弃。但一般来说,即使在解释语言中,变量名的内存消耗也可以忽略不计,特别是考虑到良好变量名的优点。

答案 5 :(得分:0)

实际上在ASP.NET中,控件和母版页的长变量名确实增加了生成的HTML的大小。这将添加一些无关紧要的额外内存来缓冲输出流,但在通过网络发送的额外几百个字节中,效果最为明显。

答案 6 :(得分:0)

在Python中,名称似乎被收集到许多简单的表中;每个名称在每个代码对象中只显示一次。名称对性能没有影响。

出于统计目的,我查看了一个20行函数,它是Project Euler问题15的解决方案。该函数创建了一个292字节的代码对象。它在名称表中使用了7个不同的名称。您必须使用41个字符的变量名称来增加字节码文件的大小。

这将是唯一的影响 - 疯狂的大型名称可能会减慢模块的加载时间。