|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-10-18 02:48 UTC] sazonenkov at yandex dot ru
This function is extrimally slow read a file.
On php4.0.4pl1 it much faster (about 100-1000x)!!!
:(
<?php
require("Benchmark/Timer.php");
$time = new Benchmark_Timer;
$time -> setMarker('Start');
$fp = fopen("Photoshop.exe", "r");
//$s = explode("\n", fread($fp, filesize("Photoshop.exe") ) ) ;
fclose($fp);
//print_r($s);
$time -> setMarker('fread');
$s = file("Photoshop.exe");
$time -> setMarker('file');
$time -> setMarker('Stop');
$time -> display();
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 13:00:01 2025 UTC |
<?php require("Benchmark/Timer.php"); $time = new Benchmark_Timer; $time -> setMarker('Start'); $fp = fopen("access.log", "r"); $s = explode("\n", fread($fp, filesize("access.log") ) ) ; fclose($fp); $time -> setMarker('fread'); $s = file("access.log"); $time -> setMarker('file'); $time -> setMarker('Stop'); $time -> display(); ?> access.log 16Mb fread + explode faster when file(). Hmmm... time indexex time% Start1034933111.79707300-0.00% fread1034933112.398477000.60140417.87% file1034933115.162048002.76357182.12% Stop1034933115.162183000.0001350.00% total-3.365110100.00%Please paste readable output... ================================ [yohgaki@dev DEV]$ cat t.php <?php $filename = '/var/log/httpd/error_log.1'; require("Benchmark/Timer.php"); $time = new Benchmark_Timer; $time -> setMarker('Start'); $fp = fopen($filename,'r'); for ($i = 0; $i<100; $i++) $s = fread($fp, filesize($filename)); fclose($fp); $time -> setMarker('fread'); for ($i = 0; $i<100; $i++) $s = file($filename); $time -> setMarker('file'); $time -> setMarker('Stop'); $time -> display(); ?> [yohgaki@dev DEV]$ ./sapi/cli/php t.php ------------------------------------------------------------- marker time index ex time perct ------------------------------------------------------------- Start 1034939438.53591700 - 0.00% ------------------------------------------------------------- fread 1034939438.55064400 0.014726996421814 2.74% ------------------------------------------------------------- file 1034939439.07360900 0.52296495437622 97.21% ------------------------------------------------------------- Stop 1034939439.07387800 0.00026905536651611 0.05% ------------------------------------------------------------- total - 0.53796100616455 100.00% ------------------------------------------------------------- [yohgaki@dev DEV]$file_get_contents() is alow slow. It's better than file(), though. [yohgaki@dev DEV]$ cat t.php <?php $filename = '/var/log/httpd/error_log.1'; require("Benchmark/Timer.php"); $time = new Benchmark_Timer; $time -> setMarker('Start'); $fp = fopen($filename,'r'); for ($i = 0; $i<100; $i++) $s = fread($fp, filesize($filename)); fclose($fp); $time -> setMarker('fread'); for ($i = 0; $i<100; $i++) $s = file($filename); $time -> setMarker('file'); for ($i = 0; $i<100; $i++) $s = file_get_contents($filename); $time -> setMarker('file_get_contents'); $time -> setMarker('Stop'); $time -> display(); ?> [yohgaki@dev DEV]$ ./sapi/cli/php t.php ------------------------------------------------------------------------- marker time index ex time perct ------------------------------------------------------------------------- Start 1034940250.73024800 - 0.00% ------------------------------------------------------------------------- fread 1034940250.74181700 0.011569023132324 1.86% ------------------------------------------------------------------------- file 1034940251.26557900 0.52376198768616 84.25% ------------------------------------------------------------------------- file_get_contents 1034940251.35169600 0.086117029190063 13.85% ------------------------------------------------------------------------- Stop 1034940251.35192900 0.00023293495178223 0.04% ------------------------------------------------------------------------- total - 0.62168097496033 100.00% -------------------------------------------------------------------------Damn Mozilla wont work with buffer normally :( Lets try again. Problem: read from a text file into array 1. using fread()+explode() 2. using file() Here my tests <?php require("Benchmark/Timer.php"); $time = new Benchmark_Timer; $time -> setMarker('Start'); $fp = fopen("access.log", "r"); $s = explode("\n", fread($fp, filesize("access.log") ) ) ; fclose($fp); $time -> setMarker('fread+explode'); $s = file("access.log"); $time -> setMarker('file'); $time -> setMarker('Stop'); $time -> display(); ?> And results --------------------------------------------------- time index ex time % Start 1034941339.44905500 - 0.00% fread+explode 1034941340.05736200 0.608307 34.72% file 1034941341.20114900 1.143787 65.28% Stop 1034941341.20128500 0.000136 0.01% total - 1.752230 100.00% --------------------------------------------------- Is it right? I dont think so.fgets() is fast. yohgaki@dev DEV]$ cat t.php <?php $filename = '/var/log/httpd/error_log.1'; require("Benchmark/Timer.php"); $time = new Benchmark_Timer; $time -> setMarker('Start'); $fp = fopen($filename,'r'); for ($i = 0; $i<100; $i++) $s = explode("\n", fread($fp, filesize($filename))); fclose($fp); $time -> setMarker('fread'); for ($i = 0; $i<100; $i++) $s = file($filename); $time -> setMarker('file'); for ($i = 0; $i<100; $i++) $s = file_get_contents($filename); $time -> setMarker('file_get_contents'); $fp = fopen($filename,'r'); for ($i = 0; $i<100; $i++) $s = fgets($fp,filesize($filename)); $time -> setMarker('fgets'); fclose($fp); [yohgaki@dev DEV]$ ./sapi/cli/php t.php ------------------------------------------------------------------------- marker time index ex time perct ------------------------------------------------------------------------- Start 1034942600.41311100 - 0.00% ------------------------------------------------------------------------- fread 1034942600.43045000 0.017338991165161 2.68% ------------------------------------------------------------------------- file 1034942600.95939400 0.52894401550293 81.66% ------------------------------------------------------------------------- file_get_contents 1034942601.04506900 0.085675001144409 13.23% ------------------------------------------------------------------------- fgets 1034942601.06049200 0.015423059463501 2.38% ------------------------------------------------------------------------- Stop 1034942601.06084500 0.00035297870635986 0.05% ------------------------------------------------------------------------- total - 0.64773404598236 100.00% ------------------------------------------------------------------------- [yohgaki@dev DEV]$