PHP in_array() 関数を最適化し、効率を 50 倍に向上
/原始程序 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('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'=>''); 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('a','z')); shuffle($str); $random_array[] = implode('',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; }
最後に、当然ですが、実行関数 strlen($str) がループの外に取り出されます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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