解決
/Perspective:
ラベルが付けられた行が 1 行だけで、先頭にある最初の行が\t
列見出し行であると仮定します...
過剰なコメント (明確にするため)
$perspectives = array(); //Initialise perspectives array
$columns = array(); //Initialise column names array
$text_file = fopen('./file', 'r'); //Open file to handle
while($line = fgets($text_file)){ //Read file line by line
if(strpos($line, '/Perspective:') === 0){ //Check if '/Perspective:' is at start of string
$perspectives = explode(' ', substr($line, 14)); // Remove first 14 characters: /Perspective:
continue;
}
else if(strpos($line, "\t") === 0){ //Check if first char in line is \t
$columns = explode("\t",
preg_replace("#\t/.+#", '', substr($line, 1)) //Remove commented column names and first \t
);
break; // Break while loop after column names row
}
}
コメント解除されたコード
$perspectives = array();
$columns = array();
$text_file = fopen('./file', 'r');
while($line = fgets($text_file)){
if(strpos($line, '/Perspective:') === 0){
$perspectives = explode(' ', substr($line, 14));
continue;
}
elseif(strpos($line, "\t") === 0){
$columns = explode("\t",
preg_replace("#\t/.+#", '', substr($line, 1))
);
break;
}
}
入力ファイル
/Purpose: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nam, suscipit incidunt doloribus voluptatum dicta maxime accusantium animi eum vero eaque odit quae non quaerat possimus enim ad numquam consequuntur beatae.
/Origin: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima, animi minus perspiciatis laudantium? Nostrum, aspernatur, sequi ratione assumenda fuga similique architecto deleniti sint recusandae voluptatibus numquam obcaecati ducimus eaque nisi.
/Rawdata: Unknown
/Perspective: skincover intelligence legs
/Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro, libero, accusamus laboriosam modi voluptatem facere quod unde atque perferendis laborum nisi omnis nihil cum minima quaerat. Quia, quaerat ipsa molestiae.
legs skincover weight intelligence speed /something /else
dog 1 1 1 1 1 1 1
pig 1 1 1 1 1 1 1
human 1 1 1 1 1 1 1
サイドノート
好奇心から、あなたのコード ( Code A ) と私のコード ( Code B ) を比較して、どちらのパフォーマンスが優れているかを確認しました。
結果
実行時間:
Code A: 0.000108
Code B: 0.000044
コード Bは2.4545454545
1 倍高速で、すべての操作perspecitves
を実行し、column names
2 つのコードをあまり分析しなくても、違いの主な原因はファイルの処理方法にあると思います。
注意
比較を複数回実行しましたが、差はおおよそ から までの範囲でし2.2x
た2.7x
。
また、時間はどちらも非常に小さいので、大したことではありません...