空格等号

时间:2015-06-13 04:06:33

标签: javascript c# html c++

我只是想知道使用等号之前和之后删除空格的性能是否有差异。像这两个代码片段。

第一

int i = 0;

第二

int i=0;

我正在使用第一个,但我正在学习html / javascript的朋友告诉我,我的编码效率低下。在html / javascript中是真的吗?这是性能的巨大提升吗?它在c ++ / c#和其他编程语言中也是一样的吗?关于缩进,他说3个空格比标签更好。但我已经习惯了这样的代码。所以我只是想知道他是否正确。

2 个答案:

答案 0 :(得分:7)

你的朋友有点误导。

代码中的额外空格会对JS文件的大小产生微小的差异,这可能会对下载速度产生微小的影响,但如果它显而易见或有意义,我会感到惊讶。

额外的空格不太可能在解析文件时产生有意义的差异。

解析文件后,额外的空格不会对执行速度产生任何影响,因为它们不是解析代码的一部分。

如果您真的想要优化下载或解析速度,那么这样做的方法是以最可读的方式编写代码以获得最佳可维护性,然后对部署的代码使用最小化器,这是许多人的标准做法网站。这将为您提供两全其美 - 可维护,可读代码和最小部署大小。

最小化器将删除所有不必要的间距,缩短变量名称,删除注释,折叠线等...所有这些都旨在使部署的代码尽可能小,而不会改变代码的运行时含义

C ++是一种编译语言。因此,只有开发人员使用的编译器才能看到任何额外的空格(与注释相同)。代码编译成本机代码后,这些空间就消失了,这是最终用户获取和运行的代码。因此,关于行中元素之间的空格的问题根本不适用于C ++。

Javascript是一种解释性语言。这意味着源代码被下载到浏览器,然后浏览器在运行时将代码解析为解释器可以运行的某种操作码形式。 Javascript中的空格将是下载代码的一部分(如果您不使用最小化程序来删除它们),但是一旦解析了代码,那些额外的空格就不是代码运行时性能的一部分。因此,空间可能对下载时间产生很小的影响,并且可能对解析时间的影响甚至更小(尽管我猜测不太可能是可测量的或有意义的)。如上所述,为Javascript优化此方法的方法是使用空格来增强源代码的可读性,然后在代码上运行最小化器以生成代码的部署版本,以最小化文件的部署大小。这样可以保持最大的可读性并最大限度地减少下载量。

答案 1 :(得分:2)

很少(javascript)到no(c#,c ++,Java)性能差异。特别是在编译语言中,源代码编译为完全相同的机器代码。

使用空格而不是制表符可能是一个好主意,但不是因为性能。相反,如果你不小心,使用选项卡会导致“tab rot”,其中某些地方有标签,而其他地方有空格,源代码的缩进取决于你的标签设置,使其难以阅读