【发布时间】:2016-09-18 17:16:17
【问题描述】:
我正在编写一个 Perl/CGI 脚本,它读取一个 8MB 超过 100k 行的文件,并以 100 行的块显示它(使用分页)。
以下哪一项会更快
-
将整个输入文件存储到一个数组中,每页提取100行(使用数组切片)
my @extract = @main_content[101..200];或
-
对于每个页面,使用 sed 命令提取用户想要查看的任何 100 行。
sed -n '101,200'p filename
【问题讨论】:
-
如果您已经进行了一些会话管理,那么您应该为每个 100 行块存储
seek点 -
两者都试一下就知道了。答案在很大程度上取决于您的系统,而我们无权访问。
-
另外,CGI 和速度并不完全是同义词。在持久环境中运行您的脚本。
-
当您说“读取”时,它是从磁盘中读取的吗?用户是要立即翻页还是可以在运行时随时返回?他们是要来回走还是只走文件?这 100k 行不算什么——我只是通过在半秒内读取这样一个单行文件来计算 400k(眼球)。是的,你可以把它拉成一个数组,绑定它,寻找……为什么要优化这个任务?请更好地描述问题。
-
@zdim 我试过了,我将内容存储在一个数组中,然后将其绑定并读取。对于单个用户或几个用户,它可以正常工作(即加载速度快)。但是当用户数量增加或输入文件非常大(超过 80 MB)时,我的服务器将挂起。 This is for small size file within 5 MB 然后单击页面底部的标准视图,该视图用于 8 mb 以上的 cgi 响应(我通过 python cgi 使用 sed 命令尝试过)。
标签: performance perl sed