这就引出了一个问题,即本机C设置没有像Javascript编译器那样优化程度如何?
由于C是静态编译和链接的,因此可能需要较长的整个代码库构建步骤(我曾经在一个完整的优化构建中花了将近一个小时的时间来工作,否则只花了10分钟的时间),以及一个非常危险的硬件-级别的语言,如果您不慎重对待,则会冒很多未定义行为的风险,编译器的默认设置通常不会针对smithereens进行优化,因为这是开发人员/调试版本,旨在通过更快的周转时间帮助调试和提高生产率。
因此,在C语言中,您可以将未优化但构建速度更快,更易于调试的开发人员/调试构建与真正运行的非常优化,构建速度较慢,较难调试的生产/发布构建区分开来快速,并且编译器的默认设置通常倾向于前者。
使用v8 / NodeJS之类的东西,您需要处理的是实时编译器(动态编译),该编译器仅在运行时动态地构建和优化必要的代码。最重要的是,JS是一种更加安全的语言,并且通常还为安全性而设计,不允许您在硬件的原始位和字节上工作。
结果,它不需要像C / C ++这样的本机静态编译语言的那种强大的发行/调试版本区别。但是,如果您真的想要的话,它也不允许您在C语言中踩踏板。
许多尝试对来自其他语言的C / C ++进行基准测试的人常常无法理解这种构建区别以及编译器/链接器优化设置的重要性,并感到困惑。如您所见,通过适当的设置,很难击败这些本机编译器和允许您编写真正的低级代码的语言的性能。



