dan*_*iel 5 compiler-construction performance whitespace interpreter commenting
这是我一直想知道的,所以这里.
在编写代码时,我/我被教导要分隔线,评论它们等......以提高可读性(正如我猜大多数人都是这样).我显然不认为这是一个任何问题,但它让我思考,如果所有这些空白和注释部分被编译器/解释器或其他任何东西忽略,这会对它的性能产生多大影响?
不可否认,我不太了解编译器的运行方式 - 只有基本概念.但是,我有一个公平的想法,一个人能够"忽略空白",它首先需要识别它(至少),这需要工作,因此需要时间.
那么我想,在极端水平的空白或评论呢?比方说,数百万或数十亿的部分?
我想我问的问题是:在什么时候(即极端级别)会忽略代码部分会影响编译器/解释器产生及时结果的能力,从而影响用户的体验?
谢谢.
尝试这个:
编辑评论。
在 Scheme 中使用 hello world 的简单示例,其中包含大量不同的注释行:
netbsd1# ls -l file*
-rw-r--r-- 1 root wheel 1061 Mar 11 00:01 file.out
-rw-r--r-- 1 root wheel 102041 Mar 11 00:01 file1.out
-rw-r--r-- 1 root wheel 10200041 Mar 11 00:01 file2.out
-rw-r--r-- 1 root wheel 1020000041 Mar 11 00:03 file3.out
netbsd1# for i in file*
> do
> echo $i
> time ./scm $i
> done
file.out
hello world
0.06s real 0.01s user 0.01s system
file1.out
hello world
0.03s real 0.01s user 0.02s system
file2.out
hello world
0.64s real 0.28s user 0.30s system
file3.out
hello world
61.36s real 11.78s user 41.10s system
netbsd1#
Run Code Online (Sandbox Code Playgroud)
显然,1GB 文件产生了重大影响,考虑到我在这个盒子上只有 512M 的 RAM,这并不一定令人惊讶。
此外,这是解释/编译速度。如果您实际编译了这些文件,则运行时将完全相同。您可以得出自己的结论来定义影响。