PHP 大数据中作为time()函数速度的动态值

PHP dynamical value as time() function speed in bigdata

在十亿次以上的迭代中使用 time() 或任何类似的动态值的首选(内存消耗更少且最快)方法是什么?

A)

$time = time();
foreach($_billion_items_array as $_i => $_v) {
  if($_v['time_saved'] < $time + rand(1,100)) {
    // do something
  }
}

B)

$this->time = time();

foreach($this->$_billion_items_array as $_i => $_v) {
  if($_v['time_saved'] < $this->time + rand(1,100)) {
    $this->do_something(_v);
  }
}

C)

$this->time = time();

function fixTime($_correction) {
  return $this->time + $_correction;
}

foreach($this->$_billion_items_array as $_i => $_v) {
  if($_v['time_saved'] < $this->fixTime(rand(1,100)) {
    $this->do_something(_v);
  }
}

我个人更喜欢 C) 但我不知道 PHP 如果每次迭代都将时间存储为变量,将如何使用内存? A) 和 B) 一样吗?

A 肯定是最快的,因为它使用最简单的方法访问循环内的 $time 变量。

C 是迄今为止最慢的,因为它必须在循环的每次迭代中调用您的函数。

您所有的选择使用的 RAM 量大致相同。

如果您进行 10^3 次迭代,none 会有很大不同。但是您正在进行 10^9 次交互,因此您应该尽可能地简化循环中的代码。

而且,我想你想要 foreach() 代替 for()