Article

Сравнение производительности запросов

Примечание: все тесты крутились на фоне!


Пример 1 : Просто берём и создаем 1*10^5 строк

# то, что висит в консоли
# console/controllers/SiteController
public function actionIndex()
{
    ini_set('max_execution_time', 0);
    $time=time();
    $fileName='/var/www/simple_sitemap.loc/files/test.txt';
    for ($i=0;$i<100000;$i++)
    {
        $a=file_get_contents($fileName);
        file_put_contents($fileName,$a.','.$i);
    }
    $time2=time();
    $time3=$time2-$time;
    return $time3;
}
# вызов с веб приложения 
# frontend/controllers/SiteController
public function actionTest1()
{
$cont=new TestController('test',\Yii::$app);
var_dump($cont->runAction('index'));
}
// результат ==> int(1497)  тоесть, около 27 минут на генерацию

Пример 2: Генерируем тот же обьем данных, только на сей раз используем генератор

# console/controllrs/TestController


 function test(){
$i=0;
    yield $i;
    while($i<100000)
    {
        $i++;
        yield $i;
    }
}

public function actionIndex1()
{
    ini_set('max_execution_time', 0);
    $time=time();
    $fileName='/var/www/simple_sitemap.loc/files/test2.txt';
    foreach ($this->test() as $data)
    {
        $a=file_get_contents($fileName);
        file_put_contents($fileName,$a.','.$data);
    }
    $time2=time();
    $time3=$time2-$time;
    return $time3;
} 

public function actionTest1()
{
$cont=new TestController('test',\Yii::$app);
var_dump($cont->runAction('index'));
}
// результат ==> int(1333)  тоесть, около 22 минут на генерацию

Вердикт:

Даже на кривом генераторе мы экономим 3-5 минут на 1*10^5 строк. Генератор работает быстрее в 1,123091 раза

Third-party source 2

No data here

Dropdown
test 123