我的代码是否使用最佳方式在php中读取标准输入?

时间:2011-09-10 17:36:36

标签: php algorithm optimization stdin

我使用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");



?>

3 个答案:

答案 0 :(得分:1)

我无法想象你的方法会变得更有效率。

答案 1 :(得分:1)

为了提高效率,最好:

  1. 将“%d%d”设为单引号'%d%d'
  2. 将此字符串移动到变量/常量并在50000循环中使用

答案 2 :(得分:0)

因为它显然非常小,不能再进一步削弱。但是,由于您未指定,因此您只想优化循环。然后我为其余的代码点几点。

显示microtime时,您可以这样做:

$pointelapsed = number_format(microtime(true) - $micropoint1, 7);

而且,如果fscanf()无法返回任何内容,会发生什么。它会不会发出错误..?