我使用PHP CLI提供标准输入。我是否使用读取输入的最佳方法?
例如,我将提供50,000行数据。每行包含两个数字。我的代码是否是读取50,000行数据的最有效方法?或者这是一种非常低效的方法吗?
这是我的代码:
<?php
// Testing time period for execution
// Time tracker: TESTING
$micropoint1 = microtime(true);
// First, retrieve the number of points that will be provided.
$no_points = fgets(STDIN);
for($i=1, $max=$no_points+1; $i<$max; $i++) {
list($x, $y) = fscanf(STDIN, "%d %d"); // Get the string returned from the command line and convert to an array
}
// Time tracker: TESTING
$micropoint2 = microtime(true);
$pointelapsed = $micropoint2 - $micropoint1;
fwrite(STDOUT, "\nPoint Loop Took ".$pointelapsed." microsecs\n");
?>
答案 0 :(得分:1)
我无法想象你的方法会变得更有效率。
答案 1 :(得分:1)
为了提高效率,最好:
答案 2 :(得分:0)
因为它显然非常小,不能再进一步削弱。但是,由于您未指定,因此您只想优化循环。然后我为其余的代码点几点。
显示microtime时,您可以这样做:
$pointelapsed = number_format(microtime(true) - $micropoint1, 7);
而且,如果fscanf()
无法返回任何内容,会发生什么。它会不会发出错误..?