作者chrisQQ (ChrisLiu)
看板PHP
标题Re: [心得] CodeIgniter 1.7.2语系档修正ini做法。
时间Fri Dec 3 15:38:23 2010
1F:→ tkdmaf:测1万笔时却测出了出乎意料之外的结果。 12/03 15:30
2F:→ tkdmaf:使用INI的时间为0.13~0.2,但用$lang=array()则是0.23~0.33 12/03 15:30
3F:→ tkdmaf:反而是纯读INI的速度变快了。 12/03 15:31
我测的结果
Debian GNU/Linux 5.0
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010
03:25:57)
阵列数:100001(因为我写 0 <= 100000 = = 所以多个 1)
读入 array.php 时间为 0.277458
改用 parse_ini_file 时间为 0.291061
以下是我测试的 code
#!/usr/bin/php
<?php
include('Timer.php');
$timer = new Timer();
$timer->start();
//include('array.php');
$test_array = parse_ini_file('array.ini');
$timer->stop();
echo count($test_array) . "\n";
$timer->display();
function generate_array()
{
$fp1 = fopen('array.ini', 'w+');
$fp2 = fopen('array.php', 'w+');
for($i=0;$i<=100000;$i++)
{
fputs($fp1, sprintf("array_%d = %d\n", $i, $i));
fputs($fp2, sprintf("'array_%d' => %d,\n", $i, $i));
}
fclose($fp1);
fclose($fp2);
}
?>
先用 generate_array 来产生两种类型的档案,接着在帮 array.php 补上
<?php、?>、$test_array = array(、);
不过我是纯数字,也许阵列 value 可以换为字串试试看
--
看起来 parse_ini_file 似乎在正常的笔数之下是比 php array 快耶…
毕竟很少有人会在档案里面塞 100000 个 k-v pair 或是 setting…
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.64.11
4F:→ chrisQQ:附注,generate_array 也只要 1.353008 秒… (好快 12/03 15:39
5F:推 Jerr:可以来个sqlite3吗? :p 12/03 16:32
6F:推 tkdmaf:我是直接在主程式就对$this->lang->load测。 12/03 17:01
7F:→ tkdmaf:这样也实测出用INI还是比较方便,效能上也能达到需求了。 12/03 17:03
8F:→ tkdmaf:我的测试主机:ATOM 270 1.6GHZ,2G DDR3小笔电 12/03 17:06
9F:→ chrisQQ:@Jerr 我看看吃饭前有没有空在一起弄给你 XD 12/06 11:00