是否有任何经验法则可以确定程序的“合理”编译时间?显然,“合理”的含义有些主观,但在所有条件相同的情况下,例如,基于控制台的“Hello, World”不应该花费 2 个小时来编译。举个具体的例子——
给定一个 C 代码库,X 行代码,gcc 优化级别 Y,......有没有合理的方法来预测编译时间?以及关于什么是“合理”时间的任何意见?
澄清
这里感兴趣的参数仅取决于代码,而不取决于 CPU、内存、网络。
是否有任何经验法则可以确定程序的“合理”编译时间?显然,“合理”的含义有些主观,但在所有条件相同的情况下,例如,基于控制台的“Hello, World”不应该花费 2 个小时来编译。举个具体的例子——
给定一个 C 代码库,X 行代码,gcc 优化级别 Y,......有没有合理的方法来预测编译时间?以及关于什么是“合理”时间的任何意见?
澄清
这里感兴趣的参数仅取决于代码,而不取决于 CPU、内存、网络。
对于在合理的开发机器(2+GHz,4+GiB RAM)上从合理的来源构建的大多数合理的程序,编译单个源文件的答案应该是“几秒钟”。根据我的经验,分钟范围内的任何内容通常都表明存在问题。编译一个完整程序所花费的时间由要编译的文件数量来控制;编译 20,000 个文件比编译 20 个文件需要更长的时间——实际上大约是 1000 倍。(合理的来源通常有 10k 行以下的源文件和 1k 行以下的标题——这两个准则都有很多例外,而且这两个数字都相当大。)
但这一切都取决于。如果你的头文件在网络文件系统上,编译可能比在本地文件系统上要慢——除非你的本地驱动器很慢,网络速度非常快并且由 SSD 支持,而且......哦,天哪;因素太多了,几乎不可能给出一个好的答案!
除了乔纳森的回答中提到的因素外,其他因素还有:编程语言、编码风格、编译器版本、pCode 或二进制生成等。