检查变量初始化的性能


Check performance of variable initializing

我有一个像下面这样的循环,它运行了超过6000条记录,

foreach ($csv as $value) {
    $research = ResearchData::create(array('company_id' => Input::get('company'), 'date' => Input::get('date')));
}

在这里我使用了两个值company_id和date。我想知道从遵循代码

使用它的最佳方法是什么

................ 1 ....................

$company_id=Input::get('company_id');
$date=Input::get('date');
foreach($csv as value){
   $research=ResearchData::create(array('company_id'=>$company_id,'date'=>$date));
}

................ 2 ...................

foreach ($csv as $value) {
    $research = ResearchData::create(array('company_id' => Input::get('company'), 'date' => Input::get('date')));
}

从性能的角度来看,第1号会更快,但这只是因为Input::get会花费一点点时间,因为它会进行一些检查,数组连接并最终从数组中获取一些东西。这将花费完全可以忽略不计的时间,但是选项1只做一次,而选项2将为循环

的每次迭代做一次。

从其他角度来看(代码清晰度,文档等),这完全是基于意见。

可以进行批量插入。我没有做性能检查,但我希望有更好的表现。检查以下:

$company_id=Input::get('company_id');
$date=Input::get('date');
$data = array_fill(0, count($csv) - 1, ['company_id' => $company_id, 'date' => $date]); // skip the large foreach
ResearchData::insert(array_values($data)); // skip the numeric keys

文档:

  • http://php.net/array_filter
  • http://laravel.com/docs/4.2/queries插入