如何在伪造的语言和解释的语言的速度方面比较以下两个伪代码块?(忽略数字数)
本质上,是否有通过编写变量作为几个常数的函数而不是事先计算的绩效损失?这通常使代码更加清晰。
permanentNum = (3.1416 / 3) + 1.5708
return permanentNumber / userInputNumber
。
permanentNum = 2.6179
return permanentNumber / userInputNumber
谢谢!
mitch小麦的评论是绝对正确的;优化是在您有清晰正确的代码之后要做的,并且只有在必要时才进行。
。要回答这个问题,这显然取决于语言。任何类似于C的语言的体面编译器都具有恒定的折叠优化通行证。在GCC,Oracle的Javac或任何广泛使用的编译器上,您的两个示例将生成相同的代码。
解释的语言可能足够缓慢,以至于您的瓶颈成本不是您的瓶颈,无论是在解析时持续不断折叠。: - )
首先要努力寻求代码清晰度。
然后测量性能。如果存在性能问题,请确定瓶颈。
任何瓶颈都不太可能在常数分配(编译或解释的代码)中。
编译器通常会优化这样的常数,因此,即使您编写(3.1416 / 3) + 1.5708
,最终在对象代码中最终的值也是2.6179
。口译员可能会做同样的事情,但是由于他们在运行时执行此操作,因此,是的,性能会较低。
但是,差异可能可以忽略不计,因此,正如米奇·麦(Mitch Wheat)所说,您应该赞成代码清晰度。理论分析是一回事,但是确保您特定代码的实际瓶颈(在特定环境中)是测试,分析,测量的唯一方法。