【发布时间】:2022-07-12 01:30:34
【问题描述】:
我从这里得到灵感从文件的特定行读取行。
但是当我测试它以从大文件中获取行范围时:我得到了 2 个不同的结果
这是从 10mb 文件中读取 100 行的基准测试结果:
Function v1 via file(): in 35ms with memory usage 12.00Mb
Function v2 via SplFileObject: in 956ms with memory usage 2.00Mb
我的问题,有没有其他方法可以做到这一点,所以它像使用 file() 一样快,但像使用 SplFileObject 那样内存不足?
我目前的职能:
function get_line_content_range_v1($line_number_start, $line_number_end) {
$content = array();
$data = file('10mb.txt');
for($i = $line_number_start; $i <= $line_number_end; $i++) {
$content[] = $data[$i];
}
return $content;
}
function get_line_content_range_v2($line_number_start, $line_number_end) {
$content = array();
$file = new SplFileObject("10mb.txt", "r");
for($i = $line_number_start; $i <= $line_number_end; $i++) {
$file->seek($i);
$content[] = $file->current();
}
return $content;
}
【问题讨论】:
标签: php