ホームページ バックエンド開発 PHPチュートリアル PHP in_array() 関数を最適化し、効率を 50 倍に向上

PHP in_array() 関数を最適化し、効率を 50 倍に向上

Jun 20, 2016 pm 01:02 PM
PHPの最適化

/原始程序
function pinyin($str) { //判断是否是 单拼  双拼 三拼 四拼
    
    $pin_arr = array("a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", "chan", "chang", "cao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", "chuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "deng", "di", "dian", "diao", "die", "ding", "dui", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga", "gai", "gan", "gang", "gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "kei", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "lv", "luan", "lue", "lun", "luo", "ma", "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nv", "nuan", "nue", "nuo", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", "qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", "xuan", "xue", "xun", "ya", "yan", "yong", "yao", "ye", "yi", "yin", "ying", "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhong", "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", "zui", "zun", "zuo");
   
    if (in_array($str, $pin_arr)) {
        return 1;
    }
    
    for ($i = 1; $i < strlen($str); $i++) {
 
        if ($i < 7) {
            if (pinyin(substr($str, 0, $i)) && $n = pinyin(substr($str, $i))) {
 
                return $n + 1;
            }
        } else {
            return 0;
        }
    }
    return 0;
}
ログイン後にコピー

上記の $pin_arr は、約 400 要素の大きな配列です。上記から、シングルピン ドメイン名、ダブルピン ドメイン名、トリプルピン ドメイン名の概念がわかります。ここで、$str は、www などのドメイン名の中間部分を指します。scutephp.com は、すべて $pin_arr の n 個の要素で構成されており、n 個の綴りのドメイン名です。
最適化されたプログラム コードを見てください:

/**
 * 优化后的判断n拼域名函数
 * 
 */
$pin_arr =array(&#39;a&#39;=>&#39;&#39;,&#39;ai&#39;=>&#39;&#39;,&#39;an&#39;=>&#39;&#39;,&#39;ang&#39;=>&#39;&#39;,&#39;ao&#39;=>&#39;&#39;,&#39;ba&#39;=>&#39;&#39;,&#39;bai&#39;=>&#39;&#39;,&#39;ban&#39;=>&#39;&#39;,&#39;bang&#39;=>&#39;&#39;,&#39;bao&#39;=>&#39;&#39;,&#39;bei&#39;=>&#39;&#39;,&#39;ben&#39;=>&#39;&#39;,&#39;beng&#39;=>&#39;&#39;,&#39;bi&#39;=>&#39;&#39;,&#39;bian&#39;=>&#39;&#39;,&#39;biao&#39;=>&#39;&#39;,&#39;bie&#39;=>&#39;&#39;,&#39;bin&#39;=>&#39;&#39;,&#39;bing&#39;=>&#39;&#39;,&#39;bo&#39;=>&#39;&#39;,&#39;bu&#39;=>&#39;&#39;,&#39;ca&#39;=>&#39;&#39;,&#39;cai&#39;=>&#39;&#39;,&#39;can&#39;=>&#39;&#39;,&#39;cang&#39;=>&#39;&#39;,&#39;cao&#39;=>&#39;&#39;,&#39;ce&#39;=>&#39;&#39;,&#39;ceng&#39;=>&#39;&#39;,&#39;cha&#39;=>&#39;&#39;,&#39;chai&#39;=>&#39;&#39;,&#39;chan&#39;=>&#39;&#39;,&#39;chang&#39;=>&#39;&#39;,&#39;cao&#39;=>&#39;&#39;,&#39;che&#39;=>&#39;&#39;,&#39;chen&#39;=>&#39;&#39;,&#39;cheng&#39;=>&#39;&#39;,&#39;chi&#39;=>&#39;&#39;,&#39;chong&#39;=>&#39;&#39;,&#39;chou&#39;=>&#39;&#39;,&#39;chu&#39;=>&#39;&#39;,&#39;chuai&#39;=>&#39;&#39;,&#39;chuan&#39;=>&#39;&#39;,&#39;chuang&#39;=>&#39;&#39;,&#39;chui&#39;=>&#39;&#39;,&#39;chun&#39;=>&#39;&#39;,&#39;chuo&#39;=>&#39;&#39;,&#39;ci&#39;=>&#39;&#39;,&#39;cong&#39;=>&#39;&#39;,&#39;cou&#39;=>&#39;&#39;,&#39;cu&#39;=>&#39;&#39;,&#39;chuan&#39;=>&#39;&#39;,&#39;cui&#39;=>&#39;&#39;,&#39;cun&#39;=>&#39;&#39;,&#39;cuo&#39;=>&#39;&#39;,&#39;da&#39;=>&#39;&#39;,&#39;dai&#39;=>&#39;&#39;,&#39;dan&#39;=>&#39;&#39;,&#39;dang&#39;=>&#39;&#39;,&#39;dao&#39;=>&#39;&#39;,&#39;de&#39;=>&#39;&#39;,&#39;deng&#39;=>&#39;&#39;,&#39;di&#39;=>&#39;&#39;,&#39;dian&#39;=>&#39;&#39;,&#39;diao&#39;=>&#39;&#39;,&#39;die&#39;=>&#39;&#39;,&#39;ding&#39;=>&#39;&#39;,&#39;dui&#39;=>&#39;&#39;,&#39;dong&#39;=>&#39;&#39;,&#39;dou&#39;=>&#39;&#39;,&#39;du&#39;=>&#39;&#39;,&#39;duan&#39;=>&#39;&#39;,&#39;dui&#39;=>&#39;&#39;,&#39;dun&#39;=>&#39;&#39;,&#39;duo&#39;=>&#39;&#39;,&#39;e&#39;=>&#39;&#39;,&#39;en&#39;=>&#39;&#39;,&#39;er&#39;=>&#39;&#39;,&#39;fa&#39;=>&#39;&#39;,&#39;fan&#39;=>&#39;&#39;,&#39;fang&#39;=>&#39;&#39;,&#39;fei&#39;=>&#39;&#39;,&#39;fen&#39;=>&#39;&#39;,&#39;feng&#39;=>&#39;&#39;,&#39;fo&#39;=>&#39;&#39;,&#39;fou&#39;=>&#39;&#39;,&#39;fu&#39;=>&#39;&#39;,&#39;ga&#39;=>&#39;&#39;,&#39;gai&#39;=>&#39;&#39;,&#39;gan&#39;=>&#39;&#39;,&#39;gang&#39;=>&#39;&#39;,&#39;gao&#39;=>&#39;&#39;,&#39;ge&#39;=>&#39;&#39;,&#39;gei&#39;=>&#39;&#39;,&#39;gen&#39;=>&#39;&#39;,&#39;geng&#39;=>&#39;&#39;,&#39;gong&#39;=>&#39;&#39;,&#39;gou&#39;=>&#39;&#39;,&#39;gu&#39;=>&#39;&#39;,&#39;gua&#39;=>&#39;&#39;,&#39;guai&#39;=>&#39;&#39;,&#39;guan&#39;=>&#39;&#39;,&#39;guang&#39;=>&#39;&#39;,&#39;gui&#39;=>&#39;&#39;,&#39;gun&#39;=>&#39;&#39;,&#39;guo&#39;=>&#39;&#39;,&#39;ha&#39;=>&#39;&#39;,&#39;hai&#39;=>&#39;&#39;,&#39;han&#39;=>&#39;&#39;,&#39;hang&#39;=>&#39;&#39;,&#39;hao&#39;=>&#39;&#39;,&#39;he&#39;=>&#39;&#39;,&#39;hei&#39;=>&#39;&#39;,&#39;hen&#39;=>&#39;&#39;,&#39;heng&#39;=>&#39;&#39;,&#39;hong&#39;=>&#39;&#39;,&#39;hou&#39;=>&#39;&#39;,&#39;hu&#39;=>&#39;&#39;,&#39;hua&#39;=>&#39;&#39;,&#39;huai&#39;=>&#39;&#39;,&#39;huan&#39;=>&#39;&#39;,&#39;huang&#39;=>&#39;&#39;,&#39;hui&#39;=>&#39;&#39;,&#39;hun&#39;=>&#39;&#39;,&#39;huo&#39;=>&#39;&#39;,&#39;ji&#39;=>&#39;&#39;,&#39;jia&#39;=>&#39;&#39;,&#39;jian&#39;=>&#39;&#39;,&#39;jiang&#39;=>&#39;&#39;,&#39;jiao&#39;=>&#39;&#39;,&#39;jie&#39;=>&#39;&#39;,&#39;jin&#39;=>&#39;&#39;,&#39;jing&#39;=>&#39;&#39;,&#39;jiong&#39;=>&#39;&#39;,&#39;jiu&#39;=>&#39;&#39;,&#39;ju&#39;=>&#39;&#39;,&#39;juan&#39;=>&#39;&#39;,&#39;jue&#39;=>&#39;&#39;,&#39;jun&#39;=>&#39;&#39;,&#39;ka&#39;=>&#39;&#39;,&#39;kai&#39;=>&#39;&#39;,&#39;kan&#39;=>&#39;&#39;,&#39;kang&#39;=>&#39;&#39;,&#39;kao&#39;=>&#39;&#39;,&#39;ke&#39;=>&#39;&#39;,&#39;kei&#39;=>&#39;&#39;,&#39;ken&#39;=>&#39;&#39;,&#39;keng&#39;=>&#39;&#39;,&#39;kong&#39;=>&#39;&#39;,&#39;kou&#39;=>&#39;&#39;,&#39;ku&#39;=>&#39;&#39;,&#39;kua&#39;=>&#39;&#39;,&#39;kuai&#39;=>&#39;&#39;,&#39;kuan&#39;=>&#39;&#39;,&#39;kuang&#39;=>&#39;&#39;,&#39;kui&#39;=>&#39;&#39;,&#39;kun&#39;=>&#39;&#39;,&#39;kuo&#39;=>&#39;&#39;,&#39;la&#39;=>&#39;&#39;,&#39;lai&#39;=>&#39;&#39;,&#39;lan&#39;=>&#39;&#39;,&#39;lang&#39;=>&#39;&#39;,&#39;lao&#39;=>&#39;&#39;,&#39;le&#39;=>&#39;&#39;,&#39;lei&#39;=>&#39;&#39;,&#39;leng&#39;=>&#39;&#39;,&#39;li&#39;=>&#39;&#39;,&#39;lia&#39;=>&#39;&#39;,&#39;lian&#39;=>&#39;&#39;,&#39;liang&#39;=>&#39;&#39;,&#39;liao&#39;=>&#39;&#39;,&#39;lie&#39;=>&#39;&#39;,&#39;lin&#39;=>&#39;&#39;,&#39;ling&#39;=>&#39;&#39;,&#39;liu&#39;=>&#39;&#39;,&#39;long&#39;=>&#39;&#39;,&#39;lou&#39;=>&#39;&#39;,&#39;lu&#39;=>&#39;&#39;,&#39;lv&#39;=>&#39;&#39;,&#39;luan&#39;=>&#39;&#39;,&#39;lue&#39;=>&#39;&#39;,&#39;lun&#39;=>&#39;&#39;,&#39;luo&#39;=>&#39;&#39;,&#39;ma&#39;=>&#39;&#39;,&#39;mai&#39;=>&#39;&#39;,&#39;man&#39;=>&#39;&#39;,&#39;mang&#39;=>&#39;&#39;,&#39;mao&#39;=>&#39;&#39;,&#39;me&#39;=>&#39;&#39;,&#39;mei&#39;=>&#39;&#39;,&#39;men&#39;=>&#39;&#39;,&#39;meng&#39;=>&#39;&#39;,&#39;mi&#39;=>&#39;&#39;,&#39;mian&#39;=>&#39;&#39;,&#39;miao&#39;=>&#39;&#39;,&#39;mie&#39;=>&#39;&#39;,&#39;min&#39;=>&#39;&#39;,&#39;ming&#39;=>&#39;&#39;,&#39;miu&#39;=>&#39;&#39;,&#39;mo&#39;=>&#39;&#39;,&#39;mou&#39;=>&#39;&#39;,&#39;mu&#39;=>&#39;&#39;,&#39;na&#39;=>&#39;&#39;,&#39;nai&#39;=>&#39;&#39;,&#39;nan&#39;=>&#39;&#39;,&#39;nang&#39;=>&#39;&#39;,&#39;nao&#39;=>&#39;&#39;,&#39;ne&#39;=>&#39;&#39;,&#39;nei&#39;=>&#39;&#39;,&#39;nen&#39;=>&#39;&#39;,&#39;neng&#39;=>&#39;&#39;,&#39;ni&#39;=>&#39;&#39;,&#39;nian&#39;=>&#39;&#39;,&#39;niang&#39;=>&#39;&#39;,&#39;niao&#39;=>&#39;&#39;,&#39;nie&#39;=>&#39;&#39;,&#39;nin&#39;=>&#39;&#39;,&#39;ning&#39;=>&#39;&#39;,&#39;niu&#39;=>&#39;&#39;,&#39;nong&#39;=>&#39;&#39;,&#39;nu&#39;=>&#39;&#39;,&#39;nv&#39;=>&#39;&#39;,&#39;nuan&#39;=>&#39;&#39;,&#39;nue&#39;=>&#39;&#39;,&#39;nuo&#39;=>&#39;&#39;,&#39;ou&#39;=>&#39;&#39;,&#39;pa&#39;=>&#39;&#39;,&#39;pai&#39;=>&#39;&#39;,&#39;pan&#39;=>&#39;&#39;,&#39;pang&#39;=>&#39;&#39;,&#39;pao&#39;=>&#39;&#39;,&#39;pei&#39;=>&#39;&#39;,&#39;pen&#39;=>&#39;&#39;,&#39;peng&#39;=>&#39;&#39;,&#39;pi&#39;=>&#39;&#39;,&#39;pian&#39;=>&#39;&#39;,&#39;piao&#39;=>&#39;&#39;,&#39;pie&#39;=>&#39;&#39;,&#39;pin&#39;=>&#39;&#39;,&#39;ping&#39;=>&#39;&#39;,&#39;po&#39;=>&#39;&#39;,&#39;pou&#39;=>&#39;&#39;,&#39;pu&#39;=>&#39;&#39;,&#39;qi&#39;=>&#39;&#39;,&#39;qia&#39;=>&#39;&#39;,&#39;qian&#39;=>&#39;&#39;,&#39;qiang&#39;=>&#39;&#39;,&#39;qiao&#39;=>&#39;&#39;,&#39;qie&#39;=>&#39;&#39;,&#39;qin&#39;=>&#39;&#39;,&#39;qing&#39;=>&#39;&#39;,&#39;qiong&#39;=>&#39;&#39;,&#39;qiu&#39;=>&#39;&#39;,&#39;qu&#39;=>&#39;&#39;,&#39;quan&#39;=>&#39;&#39;,&#39;que&#39;=>&#39;&#39;,&#39;qun&#39;=>&#39;&#39;,&#39;ran&#39;=>&#39;&#39;,&#39;rang&#39;=>&#39;&#39;,&#39;rao&#39;=>&#39;&#39;,&#39;re&#39;=>&#39;&#39;,&#39;ren&#39;=>&#39;&#39;,&#39;reng&#39;=>&#39;&#39;,&#39;ri&#39;=>&#39;&#39;,&#39;rong&#39;=>&#39;&#39;,&#39;rou&#39;=>&#39;&#39;,&#39;ru&#39;=>&#39;&#39;,&#39;ruan&#39;=>&#39;&#39;,&#39;rui&#39;=>&#39;&#39;,&#39;run&#39;=>&#39;&#39;,&#39;ruo&#39;=>&#39;&#39;,&#39;sa&#39;=>&#39;&#39;,&#39;sai&#39;=>&#39;&#39;,&#39;san&#39;=>&#39;&#39;,&#39;sang&#39;=>&#39;&#39;,&#39;sao&#39;=>&#39;&#39;,&#39;se&#39;=>&#39;&#39;,&#39;sen&#39;=>&#39;&#39;,&#39;seng&#39;=>&#39;&#39;,&#39;sha&#39;=>&#39;&#39;,&#39;shai&#39;=>&#39;&#39;,&#39;shan&#39;=>&#39;&#39;,&#39;shang&#39;=>&#39;&#39;,&#39;shao&#39;=>&#39;&#39;,&#39;she&#39;=>&#39;&#39;,&#39;shen&#39;=>&#39;&#39;,&#39;sheng&#39;=>&#39;&#39;,&#39;shi&#39;=>&#39;&#39;,&#39;shou&#39;=>&#39;&#39;,&#39;shu&#39;=>&#39;&#39;,&#39;shua&#39;=>&#39;&#39;,&#39;shuai&#39;=>&#39;&#39;,&#39;shuan&#39;=>&#39;&#39;,&#39;shuang&#39;=>&#39;&#39;,&#39;shui&#39;=>&#39;&#39;,&#39;shun&#39;=>&#39;&#39;,&#39;shuo&#39;=>&#39;&#39;,&#39;si&#39;=>&#39;&#39;,&#39;song&#39;=>&#39;&#39;,&#39;sou&#39;=>&#39;&#39;,&#39;su&#39;=>&#39;&#39;,&#39;suan&#39;=>&#39;&#39;,&#39;sui&#39;=>&#39;&#39;,&#39;sun&#39;=>&#39;&#39;,&#39;suo&#39;=>&#39;&#39;,&#39;ta&#39;=>&#39;&#39;,&#39;tai&#39;=>&#39;&#39;,&#39;tan&#39;=>&#39;&#39;,&#39;tang&#39;=>&#39;&#39;,&#39;tao&#39;=>&#39;&#39;,&#39;te&#39;=>&#39;&#39;,&#39;teng&#39;=>&#39;&#39;,&#39;ti&#39;=>&#39;&#39;,&#39;tian&#39;=>&#39;&#39;,&#39;tiao&#39;=>&#39;&#39;,&#39;tie&#39;=>&#39;&#39;,&#39;ting&#39;=>&#39;&#39;,&#39;tong&#39;=>&#39;&#39;,&#39;tou&#39;=>&#39;&#39;,&#39;tu&#39;=>&#39;&#39;,&#39;tuan&#39;=>&#39;&#39;,&#39;tui&#39;=>&#39;&#39;,&#39;tun&#39;=>&#39;&#39;,&#39;tuo&#39;=>&#39;&#39;,&#39;wa&#39;=>&#39;&#39;,&#39;wai&#39;=>&#39;&#39;,&#39;wan&#39;=>&#39;&#39;,&#39;wang&#39;=>&#39;&#39;,&#39;wei&#39;=>&#39;&#39;,&#39;wen&#39;=>&#39;&#39;,&#39;weng&#39;=>&#39;&#39;,&#39;wo&#39;=>&#39;&#39;,&#39;wu&#39;=>&#39;&#39;,&#39;xi&#39;=>&#39;&#39;,&#39;xia&#39;=>&#39;&#39;,&#39;xian&#39;=>&#39;&#39;,&#39;xiang&#39;=>&#39;&#39;,&#39;xiao&#39;=>&#39;&#39;,&#39;xie&#39;=>&#39;&#39;,&#39;xin&#39;=>&#39;&#39;,&#39;xing&#39;=>&#39;&#39;,&#39;xiong&#39;=>&#39;&#39;,&#39;xiu&#39;=>&#39;&#39;,&#39;xu&#39;=>&#39;&#39;,&#39;xuan&#39;=>&#39;&#39;,&#39;xue&#39;=>&#39;&#39;,&#39;xun&#39;=>&#39;&#39;,&#39;ya&#39;=>&#39;&#39;,&#39;yan&#39;=>&#39;&#39;,&#39;yong&#39;=>&#39;&#39;,&#39;yao&#39;=>&#39;&#39;,&#39;ye&#39;=>&#39;&#39;,&#39;yi&#39;=>&#39;&#39;,&#39;yin&#39;=>&#39;&#39;,&#39;ying&#39;=>&#39;&#39;,&#39;yo&#39;=>&#39;&#39;,&#39;yong&#39;=>&#39;&#39;,&#39;you&#39;=>&#39;&#39;,&#39;yu&#39;=>&#39;&#39;,&#39;yuan&#39;=>&#39;&#39;,&#39;yue&#39;=>&#39;&#39;,&#39;yun&#39;=>&#39;&#39;,&#39;za&#39;=>&#39;&#39;,&#39;zai&#39;=>&#39;&#39;,&#39;zan&#39;=>&#39;&#39;,&#39;zang&#39;=>&#39;&#39;,&#39;zao&#39;=>&#39;&#39;,&#39;ze&#39;=>&#39;&#39;,&#39;zei&#39;=>&#39;&#39;,&#39;zen&#39;=>&#39;&#39;,&#39;zeng&#39;=>&#39;&#39;,&#39;zha&#39;=>&#39;&#39;,&#39;zhai&#39;=>&#39;&#39;,&#39;zhan&#39;=>&#39;&#39;,&#39;zhong&#39;=>&#39;&#39;,&#39;zhao&#39;=>&#39;&#39;,&#39;zhe&#39;=>&#39;&#39;,&#39;zhen&#39;=>&#39;&#39;,&#39;zheng&#39;=>&#39;&#39;,&#39;zhi&#39;=>&#39;&#39;,&#39;zhong&#39;=>&#39;&#39;,&#39;zhou&#39;=>&#39;&#39;,&#39;zhu&#39;=>&#39;&#39;,&#39;zhua&#39;=>&#39;&#39;,&#39;zhuai&#39;=>&#39;&#39;,&#39;zhuan&#39;=>&#39;&#39;,&#39;zhuang&#39;=>&#39;&#39;,&#39;zhui&#39;=>&#39;&#39;,&#39;zhun&#39;=>&#39;&#39;,&#39;zhuo&#39;=>&#39;&#39;,&#39;zi&#39;=>&#39;&#39;,&#39;zong&#39;=>&#39;&#39;,&#39;zou&#39;=>&#39;&#39;,&#39;zu&#39;=>&#39;&#39;,&#39;zuan&#39;=>&#39;&#39;,&#39;zui&#39;=>&#39;&#39;,&#39;zun&#39;=>&#39;&#39;,&#39;zuo&#39;=>&#39;&#39;);
function changed_pinyin($str) { //判断是否是 单拼  双拼 三拼 四拼
 
    global $pin_arr;
 
    if(isset($pin_arr[$str])){
        return 1;
    }
    
    $length = strlen($str);
    for ($i = 1; $i < $length; $i++) {
 
        if ($i < 7) {
            if (changed_pinyin(substr($str, 0, $i)) && $n = changed_pinyin(substr($str, $i))) {
                return $n + 1;
            }
        } else {
            return 0;
        }
    }
    return 0;
}
 
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
 
 
//随机生成字符串用于测试
$random_array = array();
for($i = 0; $i < 5000; $i++){
    $str = array_merge(range(0,9),range(&#39;a&#39;,&#39;z&#39;));
    shuffle($str);
    $random_array[] = implode(&#39;&#39;,array_slice($str,0,  array_rand(range(2, 15))));
}
 
$time_start = microtime_float();
 
foreach($random_array as $row){
    changed_pinyin($row);  //大于30s
    //pinyin($row);        //小于0.5s
}
 
$time_end = microtime_float();
$time = $time_end - $time_start;
 
echo "耗时: $time seconds\n";
ログイン後にコピー

明らかに、上記の関数は主に in_array() 関数を実行するため、最初のステップは in_array() 関数を最適化することです。 ここで、PHP 配列の KEY が HASH で構成されており、クエリが非常に高速であることを知りました。 VALUE は KEY によって編成および保存され、各検索が実行されます。
そこで、in_array() セクションを次のように変更しました。

$pin_arr    =  array_flip($pin_arr);
if(array_key_exists($str,$pin_arr)){
	return 1; 
}
ログイン後にコピー
$pin_arr 配列が大きすぎることを考慮して、それをグローバル変数として使用し、外部で言及することで、配列要素が存在するかどうかを判断する時間が数十倍短縮されることがテストでわかりました。 array_key_exists を使用すると、ループの数が増えるにつれてプログラムの実行時間が増加し、配列内の要素の数が 1000 を超えると、isset() の実行速度が非常に遅くなります。 array_key_exists() よりもはるかに高いです。その結果、効率が数倍に向上しました。

最後に、当然ですが、実行関数 strlen($str) がループの外に取り出されます。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化するにはどうすればよいですか? Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化するにはどうすればよいですか? Jun 21, 2023 pm 05:07 PM

インターネットの発展に伴い、インターネット アプリケーションの分野では PHP アプリケーションがますます一般的になりました。ただし、PHP アプリケーションによる同時アクセスが多いと、サーバーの CPU 使用率が高くなり、アプリケーションのパフォーマンスに影響を与える可能性があります。 PHP アプリケーションのパフォーマンスを最適化するには、Memcached キャッシュ テクノロジが良い選択肢となっています。この記事では、Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化する方法を紹介します。 Memcached キャッシュ テクノロジの概要 Memcached は、

APCu キャッシュ テクノロジを使用して PHP アプリケーションのパフォーマンスを最適化するにはどうすればよいですか? APCu キャッシュ テクノロジを使用して PHP アプリケーションのパフォーマンスを最適化するにはどうすればよいですか? Jun 20, 2023 pm 09:47 PM

現在、PHP はインターネット開発において最も人気のあるプログラミング言語の 1 つとなっており、PHP プログラムのパフォーマンスの最適化も最も差し迫った問題の 1 つとなっています。大規模な同時リクエストを処理する場合、1 秒の遅延がユーザー エクスペリエンスに大きな影響を与える可能性があります。現在、APCu (AlternativePHPCache) キャッシュ テクノロジは、PHP アプリケーションのパフォーマンスを最適化するための重要な方法の 1 つとなっています。この記事では、APCu キャッシュ テクノロジを使用して PHP アプリケーションのパフォーマンスを最適化する方法を紹介します。 1.APC

PHP を使用して SuiteCRM のクライアント側のパフォーマンスを最適化する方法 PHP を使用して SuiteCRM のクライアント側のパフォーマンスを最適化する方法 Jul 20, 2023 am 10:00 AM

PHP を使用して SuiteCRM のクライアント パフォーマンスを最適化する方法の概要: SuiteCRM は強力なオープンソースの顧客関係管理 (CRM) システムですが、大量のデータや同時ユーザーを処理するときにパフォーマンスの問題が発生する可能性があります。この記事では、PHP プログラミング手法を通じて SuiteCRM クライアントのパフォーマンスを最適化するいくつかの方法を紹介し、対応するコード例を添付します。適切なデータ クエリとインデックスの使用 データベース クエリは、CRM システムの中核となる操作の 1 つです。クエリのパフォーマンスを向上させるには、適切なデータ クエリを使用します。

PHP のデータベース接続とクエリのパフォーマンスを最適化するにはどうすればよいですか? PHP のデータベース接続とクエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 29, 2023 am 10:25 AM

PHP のデータベース接続とクエリのパフォーマンスを最適化するにはどうすればよいですか?データベースは Web 開発に不可欠な部分であり、広く使用されているサーバーサイド スクリプト言語として、PHP のデータベースへの接続とクエリのパフォーマンスはシステム全体のパフォーマンスにとって重要です。この記事では、PHP データベース接続とクエリのパフォーマンスを最適化するためのヒントと提案をいくつか紹介します。永続的な接続を使用する: PHP では、データベース クエリが実行されるたびにデータベース接続が確立されます。永続的な接続では、複数のクエリで同じデータベース接続を再利用できるため、

さまざまな PHP バージョンで関数のパフォーマンスを最適化するにはどうすればよいですか? さまざまな PHP バージョンで関数のパフォーマンスを最適化するにはどうすればよいですか? Apr 25, 2024 pm 03:03 PM

さまざまな PHP バージョンで関数のパフォーマンスを最適化する方法には、分析ツールを使用して関数のボトルネックを特定すること、オペコード キャッシュを有効にするか外部キャッシュ システムを使用すること、型アノテーションを追加してパフォーマンスを向上させること、および PHP バージョンに応じて適切な文字列連結およびソート アルゴリズムを選択することなどが含まれます。

PHP を使用して SuiteCRM のプロジェクト管理機能を最適化する方法 PHP を使用して SuiteCRM のプロジェクト管理機能を最適化する方法 Jul 17, 2023 am 11:34 AM

PHP を使用して SuiteCRM のプロジェクト管理機能を最適化する方法 SuiteCRM は、幅広い機能とカスタマイズ性を提供する強力なオープンソースの顧客関係管理 (CRM) システムです。プロジェクト管理の観点から、SuiteCRM はタスクの割り当て、進捗状況の追跡、ファイル共有などのいくつかの基本機能を提供します。ただし、特定のビジネス ニーズに基づいてプロジェクト管理機能を最適化する必要がある場合があります。この記事では、PHP プログラミング言語を活用して SuiteCRM の機能を拡張および最適化する方法について説明します。

PHP Web サイトのアクセス速度の最適化: ページのリダイレクトを減らすには? PHP Web サイトのアクセス速度の最適化: ページのリダイレクトを減らすには? Aug 08, 2023 pm 02:34 PM

PHP Web サイトのアクセス速度の最適化: ページのリダイレクトを減らすには?概要: PHP Web サイトを開発および最適化する場合、Web サイトのアクセス速度を向上させることが重要な考慮事項です。ページのリダイレクトは、追加の HTTP リクエストと遅延を引き起こし、ユーザー エクスペリエンスに影響を与える一般的なパフォーマンスの問題です。この記事では、ページのリダイレクトを減らして PHP Web サイトのアクセス速度を最適化する方法を説明し、いくつかのコード例を示します。無効な URL ジャンプを確認して修正する: ページのリダイレクトは通常、無効な URL ジャンプによって発生します。これ

PHP を使用して Dreamweaver Web サイト構築の効果を最適化する方法 PHP を使用して Dreamweaver Web サイト構築の効果を最適化する方法 Mar 27, 2024 pm 01:51 PM

PHP を使用して DreamWeaver の Web サイト構築の効果を最適化する方法 今日のインターネットの台頭において、効率的で高品質の Web サイトを構築することがますます重要になっています。 DedeCMS は強力な Web サイト構築システムですが、デフォルトの機能がニーズを完全に満たさない場合があります。この記事では、PHP を使用して Dreamweaver Web サイト構築の効果を最適化する方法を検討し、いくつかの具体的なコード例を示します。 1. Web サイトの速度を最適化します。Web サイトの速度は、ユーザー エクスペリエンスと SEO ランキングにとって重要な要素の 1 つです。Web サイトの速度は、PHP コードを最適化することで改善できます。

See all articles