c - 注释是否消耗内存和/或使用周期?

标签 c node.js bash optimization

我正在使用 bash 脚本、node.js 和 C 的组合为 ARM 系统开发多个应用程序。我在开发时使用注释来跟踪代码中发生的事情或停用实际代码。

我的经验是,每个额外的内存指针和处理器周期都会减慢系统速度。

我应该为了优化而删除生产代码中的所有注释还是不值得担心?

最佳答案

正如其他答案所提到的, 没有区别。 (或任何其他编译的)代码。

这可以证明如下:

$ touch 0comments.c
$ time gcc -c -o 0comments.o 0comments.c 

real    0m0.022s
user    0m0.009s
sys 0m0.009s
$ seq -f '/* This is comment %g */' 1000000 > 1000000comments.c
$ time gcc -c -o 1000000comments.o 1000000comments.c 

real    0m0.163s
user    0m0.135s
sys 0m0.021s
$ cmp 0comments.o 1000000comments.o
$ 

生成了两个 .c 文件——一个是空的,另一个有 1000000 条评论,然后编译。比较生成的对象,没有显示出差异。

请注意编译时间确实增加了,尽管每条评论增加的时间非常微不足道,所以除非在最极端的情况下,否则应该不是问题。


,我无法衡量循环中评论的任何显着差异:

$ time for i in {0..1000000}; do
> :
> done

real    0m4.054s
user    0m4.006s
sys 0m0.049s
$ time for i in {0..1000000}; do
> :
> # This is a comment
> done

real    0m4.047s
user    0m3.999s
sys 0m0.048s
$ 

...尽管可能有更严格的测试用例。

每当必须解析任何类型的循环,它需要在执行循环之前解析整个循环(因此它知道在哪里重定向输出等)。我怀疑注释在此解析过程中被删除,因此它们不会在每次循环迭代中都被重新解析。

但是,如果注释不在任何类型的循环(或可能函数)中,则解析时间很短,但可以测量:

$ seq -f "# This is comment %g" 1000000 > 1000000comments
$ chmod +x 1000000comments 
$ time ./1000000comments 

real    0m1.675s
user    0m1.468s
sys 0m0.207s
$ touch 0comments
$ chmod +x 0comments 
$ time ./0comments 

real    0m0.001s
user    0m0.000s
sys 0m0.001s
$ 

不知道 ,尽管与任何解释性语言相似,但除了在最极端的情况下,它可能几乎没有或没有区别。


底线是 - 请不要删除您的评论 - 它们存在是有充分理由的。如果你删除它们,你代码的 future 维护者(可能包括你)将永远诅咒你的名字。 ;-)

关于c - 注释是否消耗内存和/或使用周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121787/

相关文章:

c++ - 创建整数二维数组(与字符串二维数组相比)而不提及维度

node.js - NodeJS/Express 请求实体太大 - Heroku

java - 用 Java 显示 BASH 结果

c - 如何获取我的代码的运行时间?

c - 如何将结构链接到函数?

c - 反编译 C 函数但获得奇怪的代码(参数太多,双重释放)

javascript - MongoDB:find({...}).limit(#) 背后的真相

.net - 无法在 Windows 上安装 Node.js 包

regex - 使用终端 man 命令阅读手册页中的部分

linux - 使用 bash 脚本遍历包含域的文本文件