PHP性能优化:in_array和isset 在大数组查询中耗时相差巨大,以及巧妙使用array_flip

在php数组中,如果用in_array 或者 array_search 这种寻找数组value值的,php会整个遍历一遍查询,这样当数组很大时,当然会很慢。

而考虑使用array_key_exists 或者 语言构造器isset 则会很快。

但是这两个用法需要value是key才行,非常幸运,php是世界上最好的语言。。array_flip()提供了这个用法。

所以,上测试代码

<?php

set_time_limit(0);

$arr = range(1, 1000000);
$arr1 = array_flip($arr);

$len = count($arr);

$j = 5000;

// array_key_exists
$begin = time();
for($i = 0; $i < $len; $i++){
    if(array_key_exists($j, $arr1)){
    }
}
echo "array_key_exists:".(time() - $begin)."
";


// isset
$begin = time();
for($i = 0; $i < $len; $i++){
    if(isset($arr1[$j])){
    }
}
echo "isset:".(time() - $begin)."
";


// in_array
$begin = time();
for($i = 0; $i < $len; $i++){
    if(in_array($j, $arr)){
    }
}
echo "in_array:".(time() - $begin)."
";

/**
 *
    array_key_exists:0
    isset:0
    in_array:14
 */
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇