Php 哪种方法更快?

Php 哪种方法更快?,php,Php,我有一个文本文件作为一个简单的数据库,每个条目跨越两行,如下所示: name number bob 39 jack 22 jill 85 现在假设我将每一行分隔成一个数组,我想分析每一个名称,看看它是否等于一个变量。这样做是否会更快: if($variable == $line) { //true } 或者先过滤掉偶数行(名称),然后分析它们是否等于变量?如果您不知道,下面的第一行基本上会找到计数的剩余部分(这都在foreach循环中)除以2,如果它等于0,则它是一个偶数 if ($

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

name
number
bob
39
jack
22
jill
85
现在假设我将每一行分隔成一个数组,我想分析每一个名称,看看它是否等于一个变量。这样做是否会更快:

if($variable == $line) {
    //true
}
或者先过滤掉偶数行(名称),然后分析它们是否等于变量?如果您不知道,下面的第一行基本上会找到计数的剩余部分(这都在foreach循环中)除以2,如果它等于0,则它是一个偶数

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

谢谢。

第二个要快得多。对于这样的处理,假设计算时间可以忽略不计,而试验次数会对速度产生更大的影响。当涉及到程序效率时,几乎总是这样。特别是与简单检查相比,例如两个
if
语句与一个语句。

if
语句组合在第二个语句中,以获得更快的速度

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

我想你有一个类似的数组

$lines = array('bob', '39', 'jack', '22', 'jill', '85');
然后简单地跳过
循环中的奇数行:

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

对于($i=0,$len=count($lines);$i我肯定会选择第一种样式,这取决于“某些”情况。例如,你认为等式运算需要多长时间?在我看到整数或双精度被比较的情况下,我个人觉得第一种样式要好得多

在我的书中,模运算是一个昂贵的操作。如果你有一个巨大的数据库,那么做模运算将花费很多时间。你可以尝试使用其他方法,比如下面的方法,使它更快

我希望您对上面的代码进行时间研究,并亲自了解时间差异。当我对大约500万个数据集使用模运算时,我遇到了一些与时间相关的主要问题

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


一定要使用提供的+=2运算,而不是第一种情况下的模运算。

为什么要费劲地获取偶数?这样做的目的是什么?直接找到它们!我认为解释器已经进行了这种优化(在低级代码中).我不确定它是不是。但如果不是,它会加速。