php处理俩个文本的效率问题
程序员文章站
2022-04-20 11:45:55
...
1.txt 2.txt result.txt
如代码所示,将1.txt和2.txt整理输出到一个新文件result.txt, 效果如注释部分。我写的代码处理的条数少的时候没发现问题,当俩个文本都有十几万条记录的时候,效率就出大事了,要整理10来个小时。初学PHP,求大师指点。
回复讨论(解决方案)
$t = file('data/1.txt', FILE_IGNORE_NEW_LINES);foreach($t as $v) { list($k, $v) = explode(':', $v); $a[$k][] = $v;}$t = file('data/2.txt', FILE_IGNORE_NEW_LINES);foreach($t as $v) { list($k, $v) = explode(':', $v); $b[$k][] = $v;}foreach($a as $k=>$v) { if(isset($b[$k])) { file_put_contents('data/result.txt', join(':', array_merge(array($k), $v, $b[$k])). PHP_EOL, FILE_APPEND); }}
没有嵌套的循环,不会太慢的
$t = file('data/1.txt', FILE_IGNORE_NEW_LINES);foreach($t as $v) { list($k, $v) = explode(':', $v); $a[$k][] = $v;}$t = file('data/2.txt', FILE_IGNORE_NEW_LINES);foreach($t as $v) { list($k, $v) = explode(':', $v); $b[$k][] = $v;}foreach($a as $k=>$v) { if(isset($b[$k])) { file_put_contents('data/result.txt', join(':', array_merge(array($k), $v, $b[$k])). PHP_EOL, FILE_APPEND); }}
没有嵌套的循环,不会太慢的
1.txt 2.89M, 2.txt 3.12M
运行之后提示:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)
php.ini里设置的是memory_limit = 128M,一下就用光了吗?
会有这种事?文件并不大嘛。
可能是其他的原因
你把这两个文件放到云盘上
直接设置 memory_limit = 1024M,速度快多了,非常感谢@xuzuning。
上一篇: python之图形的绘制
推荐阅读
-
php获取html 文本框的值 两个文本框,出有关问题了
-
有一个很难的有关问题,php获取javascript的值来判断域名来路,后期不好处理
-
程序员 - PHP时间问题,2014-1-21 和 2013-5-13 请用最有效率的方法计算出两个时间相差的年份和月份??
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
-
PHP的array_diff()函数在处理大数组时的效率问题
-
txt - PHP操作文本和操作mysql的效率问题
-
PHP的array_diff()函数在处理大数组时的效率问题_PHP教程
-
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题_php实例
-
[]php处理俩个文本的效率有关问题