ID: 19971
User updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: *Directory/Filesystem functions
Operating System: any
PHP Version: 4.3.0-dev
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2002-10-18 06:25:17] [EMAIL PROTECTED]
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%
-------------------------------------------------------------------------
------------------------------------------------------------------------
[2002-10-18 06:16:02] [EMAIL PROTECTED]
Please also compare with fgets().
------------------------------------------------------------------------
[2002-10-18 06:13:19] [EMAIL PROTECTED]
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]$
------------------------------------------------------------------------
[2002-10-18 04:31:16] [EMAIL PROTECTED]
<?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%
------------------------------------------------------------------------
[2002-10-18 04:11:52] [EMAIL PROTECTED]
It slow even with text files
Sorry for Photoshop.exe-example
I test it even with apache/logs/access.log
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/19971
--
Edit this bug report at http://bugs.php.net/?id=19971&edit=1