私は、非常に大きな配列とその値の多くの反復を扱う研究用のアプリケーションを作成しています。計算時間を短縮するために、コードにいくつかの改善を実装しています。現在、いくつかの改善を行った後でも、計算時間はまだ少し長いです。関数は、計算時間のほぼ半分array_key()
を消費する関数です。それに代わるより良いものはありますか?
改善が必要なものの単純なバージョン (反復ループなし) の例を作成しています。
$bigArray=array_fill(0,1000000,0);
for($i=0;$i<10;$i++){
$rnd=mt_rand(0,1000000);
$bigArray[$rnd]=1;
}
$start=microtime(true);
$list=array_keys($bigArray,1);
$end=microtime(true);
echo $end-$start;
結果は0.021490097045898
数秒程度です。これを行うためのより速い方法を知っている人はいますか?この種の計算には数十万回のラウンドが必要であり、場合によっては 30 秒に達し、その半分はarray_key()
上記の関数に使用されるため、非常に小さな改善でも役立ちます。
ところで、私はデュアル コア (Intel) E8500 @3.16GHz、3.17GHz、8Gb RAM でスクリプトを実行しています。OS は Windows 7 64 ビットです (念のため)。
前もって感謝します。