我正在尝试在PHP基础上变得更好,我在php 7.0.4上运行了这个简单的测试:
<?php
function am_I_executed(){
echo "yes I am executed\n";
return true;
}
echo "test1: \n";
if (false && am_I_executed()) {
echo "this should never be displayed \n";
}
echo "test2: \n";
if (am_I_executed() && false) {
echo "this should never be displayed \n";
}
结果是:
test1
test2
yes I am executed
在尝试这个之前我认为编译器会跳过这个 if 语句,因为它应该总是给出false,无论am_I_executed()
的返回是什么并且没有test1和test2之间的区别
我显然是错的。
我相信在现实生活中,它可能会发生这样的情况:
if(algorithm1() && algorithm2()){}
但在某些情况下,可能很难理解哪个是较轻的算法,然后决定它们应该在if语句中列出的顺序。
你如何解决这个问题?
答案 0 :(得分:1)
我认为您应该测试并计算两个算法之间的多个执行时间,并对其执行时间进行统计分析,以确定哪个更轻。
另一种更快捷的方法是读取这两个函数的代码并计算它们的复杂性。
最轻的复杂性(或最短的统计时间)是第一位的。