哪种方法更快?

时间:2012-03-07 03:59:38

标签: php

我有一个文本文件,作为一个简单的数据库,每个条目跨越两行,如下所示:

name
number
bob
39
jack
22
jill
85

现在说我在数组中分隔了每一行,我想分析每个NAME并查看它是否等于变量。这样做会更快:

if($variable == $line) {
    //true
}

或者首先过滤掉偶数行(名称),然后分析它们以查看它们是否等于变量?如果你不知道,下面的第一行基本上找到了计数的剩余部分(这是在一个foreach循环中)除以2,如果它等于0则它是偶数。

if ($count%2 == 0) {
    if($variable == $line) {
        //true
    }
}

感谢。

4 个答案:

答案 0 :(得分:1)

我肯定会根据“某些”情况选择第一种风格。例如,您认为您的平等运作需要多长时间?如果我看到整数或双打被比较,那么第一种风格对我来说似乎要好得多。

模数运算符在我的书中是一项昂贵的操作。如果你有一个巨大的数据库在做模数操作将花费很多时间。您可以尝试使用其他方法Reference更快地加快速度。

我希望您对上述代码进行时间研究,并了解自己的时间差异。当我使用modulo操作大约500万个数据集时,我遇到了一些与时间有关的重大问题。

根据其中一个答案进行编辑。

绝对使用已提供的+ = 2操作而不是模数以及第一种情况。

答案 1 :(得分:0)

第二个更快。对于这样的处理,假设计算时间可以忽略不计,而试验次数将更大程度地影响您的速度。在程序效率方面,这几乎总是如此。特别是与简单检查相比,例如两个if语句与一个。{/ p>

答案 2 :(得分:0)

将第二个if语句组合起来以获得更快的速度。

if($count%2==0 && $variable==$line) {
}

答案 3 :(得分:0)

我假设你有一个类似

的数组
$lines = array('bob', '39', 'jack', '22', 'jill', '85');

然后只需跳过for循环中的奇数行:

for ($i=0, $len=count($lines); $i<$len; $i+=2) {
   if ($lines[$i] == $var) {
       // true
   }
}