LoginSignup
29
30

More than 5 years have passed since last update.

高速なarray_diff()

Last updated at Posted at 2015-02-23

array_diff()の処理速度が遅いので高速化

key,valueをarray_flip()で反転させた配列同士からarray_diff_key()で差分を取り、
再度key,valueを反転させてarray_diff()と同じ結果を取っています。

function.php
//高速array_diff()
function fast_array_diff($a1,$a2){
  return array_flip(array_diff_key(array_flip((array)$a1),array_flip((array)$a2)));
}

処理速度の比較

3000個の整数値が入った配列\$a1と14000個の整数値が入った配列\$a2を用意しました。

array_diff($a1,$a2)
1.6024 sec

遅い(´・ω・`)

fast_array_diff($a1,$a2)
0.0053 sec

速い(*・ω・*)

整数の配列以外で検証してないので、もし結果が異なる場合があれば教えて頂きたいです。

マニュアル

29
30
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
30