等号中的空格

Spaces in equal signs

本文关键字:空格      更新时间:2023-09-26

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

第一

int i = 0;

第二

int i=0;

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

你的朋友有点误入歧途。

代码中多余的空格会对JS文件的大小产生很小的差异,这可能会对下载速度产生很小的影响,尽管如果它很明显或有意义,我会感到惊讶。

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

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


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

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


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

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

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

使用空格而不是制表符可能是一个好主意,但不是因为性能。 相反,如果你不小心,使用制表符可能会导致"制表符腐烂",即某些地方有制表符,而另一些地方有空格,源代码的缩进取决于你的制表符设置,使其难以阅读。