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

Memory 如何命名变量对应用程序的内存使用有影响吗?,memory,variables,Memory,Variables,声明变量名时,其名称的长度对应用程序的总内存有多大影响(如果有的话)?是否有一个最大长度?或者我们是否可以随心所欲地详细说明变量(和实例)?它对编译语言没有影响。在编译语言中,几乎肯定不会;所有内容都成为符号表中的符号。在解释语言中,答案也是否定的,只有极少数例外(例如,在某些较旧版本的Python中会有差异)。这实际上取决于语言 如果你使用C++或C,它没有影响。 如果您使用的是解释性语言,那么您就是在传递源代码,因此它会产生巨大的影响 如果您使用的是编译成中间语言的编译语言,如Java或任何

声明变量名时,其名称的长度对应用程序的总内存有多大影响(如果有的话)?是否有一个最大长度?或者我们是否可以随心所欲地详细说明变量(和实例)?

它对编译语言没有影响。

在编译语言中,几乎肯定不会;所有内容都成为符号表中的符号。在解释语言中,答案也是否定的,只有极少数例外(例如,在某些较旧版本的Python中会有差异)。

这实际上取决于语言

如果你使用C++或C,它没有影响。 如果您使用的是解释性语言,那么您就是在传递源代码,因此它会产生巨大的影响

如果您使用的是编译成中间语言的编译语言,如Java或任何.NET语言,那么通常变量名、类名、方法名等都是IL的一部分。使用更长的方法名称将产生影响。但是,如果您稍后运行模糊处理程序,这会消失,因为模糊处理程序会将所有内容重命名为(通常)非常短的名称。这就是为什么混淆通常会影响性能


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

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

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

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

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

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


这将是唯一的影响——非常大的名称可能会减慢模块的加载时间

IL的重要性不容忽视。Java、C#、VB.Net是您想到的,但即使python也没有解释,它有自己的IL形式……名称可能是IL的一部分,但至少在.Net中,IL是JIT到机器语言的,所以同样,没有变量名。是的,在最后运行时没有变量名,但在运行时,JIT处理长变量名。这增加了所需的内存空间,以及在内部构建变量名映射的处理时间+IL被保留,应用程序运行时内存使用的一部分。+1-我正要问这个问题。