等号中的空格
Spaces in equal signs
我只是想知道删除等号前后的空格在性能上是否有差异。就像这两个代码片段。
第一
int i = 0;
第二
int i=0;
我正在使用第一个,但我正在学习html/javascript的朋友告诉我,我的编码效率低下。在html/javascript中是真的吗?这是性能的巨大提升吗?在 C++/C# 和其他编程语言中也会一样吗?关于缩进,他说 3 个空格更好。但是我已经习惯了这样的代码。所以我只想知道他是否正确。
你的朋友有点误入歧途。
代码中多余的空格会对JS文件的大小产生很小的差异,这可能会对下载速度产生很小的影响,尽管如果它很明显或有意义,我会感到惊讶。
额外的空格不太可能在解析文件的时间上产生有意义的差异。
解析文件后,多余的空格不会对执行速度产生任何影响,因为它们不是解析的代码的一部分。
如果您真的想优化下载或解析速度,那么这样做的方法是以最易读的方式编写代码以获得最佳可维护性,然后对部署的代码使用最小化器,这是许多网站的标准做法。 这将为您提供两全其美的优势 - 可维护、可读的代码和最小部署大小。
最小化器将删除所有不必要的间距,缩短变量的名称,删除注释,折叠行等......所有这些都旨在使部署的代码尽可能小,而不会更改代码的运行时含义。
C++是一种编译语言。 因此,只有开发人员使用的编译器才能看到任何多余的空格(与注释相同)。 一旦代码被编译为最终用户获取和运行的本机代码,这些空格就会消失。 因此,关于线条中元素之间的空格的问题根本不适用于C++。
Javascript是一种解释型语言。 这意味着源代码被下载到浏览器,然后浏览器在运行时将代码解析为解释器可以运行的某种操作码形式。 Javascript 中的空格将成为下载代码的一部分(如果您不使用最小化器来删除它们),但是一旦代码被解析,这些额外的空格就不是代码运行时性能的一部分。 因此,空间可能对下载时间产生很小的影响,对解析时间的影响可能更小(尽管我猜测不太可能是可测量的或有意义的)。 正如我上面所说,针对 Javascript 优化这一点的方法是使用空格来增强源代码中的可读性,然后在代码上运行最小化器以生成代码的部署版本,以最小化文件的部署大小。 这样可以保持最大的可读性并最小化下载大小。
性能差异很小(javascript)到没有(c#,c ++,Java)。 特别是在编译语言中,源代码编译为完全相同的机器代码。
使用空格而不是制表符可能是一个好主意,但不是因为性能。 相反,如果你不小心,使用制表符可能会导致"制表符腐烂",即某些地方有制表符,而另一些地方有空格,源代码的缩进取决于你的制表符设置,使其难以阅读。
- 2D数组来自文本输入,中间有空格
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- 移除前面有空格的前2个字符串
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- C++为一串单词添加空格
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- 如何打印不带空格的输入整数?
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- 在 c++ 中逐行阅读字符串,不要以空格停止