foreach、while、for_PHP のパフォーマンス比較チュートリアル
一般に、配列を走査するには、for、while、foreach の 3 つのメソッドがあります。その中で最もシンプルで便利なのは foreach です。では、それらの操作とパフォーマンスにはどのような違いがあるのでしょうか?通常、どちらの方法を使用するのが良いでしょうか? テストプラットフォーム: テストコード: $arr = array(); 関数 GetRunTime() for($i = 0; $i $time_end = GetRunTime(); echo for:.round($time_used, 7).(s) while(list($key, $val) = each($arr)){ $time_end = GetRunTime(); echo while の使用時間:.round($time_used, 7).(s) foreach($arr as $key => $val){ $time_end = GetRunTime(); ?> テスト結果: 3 つのテスト結果を平均します: テストを繰り返した結果、同じ配列を走査する場合、foreach が最も速く、while が最も遅いことがわかりました。 foreach は while よりも約 20% ~ 30% 高速です。次に、配列の添え字を 500000 と 5000000 に増やしても、テスト結果は同じです。しかし、原理的な観点から見ると、foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します。一般的に、while は foreach よりも高速であると考えられています。 foreach は最初に配列がコピーされる場所を配置し、while は内部ポインタを直接移動します) が、結果はまったく逆になります。その理由は、foreach が PHP の内部実装であるのに対し、while は一般的なループ構造であるためです。 したがって、一般的なアプリケーションでは、シンプルで効率的な foreach フォームを使用することを好みます。 PHP5 では、foreach はクラスの属性をトラバースすることもできます。
まず、50,000 個の添字を持つ 1 次元配列を走査するのにかかる時間をテストしてみましょう:
CPU: P-M 725
メモリ: 512M
ハードディスク: 40G 5400 rpm
OS: Windows XP SP2
WEB: apache 2.0.54 php5.0.4
/*
* @ 著者: Lilov
* @ ホームページ: www.codesky.com
* @ 電子メール: zhongjiechao@gmail.com
*
*/
for($i = 0; $i <50000; $i++){
$arr[] = $i*rand(1000,9999);
}
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
##### ##############################
$time_start = GetRunTime();
}
$time_used = $time_end - $time_start;
;
unset($str, $time_start, $time_end, $time_used);
####の使用時間##############################
$time_start = GetRunTime();
$str .= $val;
}
$time_used = $time_end - $time_start;
;
unset($str, $key, $val, $time_start, $time_end, $time_used);
###################################
$time_start = GetRunTime();
$str .= $val;
}
$time_used = $time_end - $time_start;
echo foreach:.round($time_used, 7).(s)
;
### の使用時間##################################
それぞれ for、while、および foreach に対応します
0.1311650
0.1666853
0.1237440

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

さまざまな Java フレームワークのパフォーマンス比較: REST API リクエスト処理: Vert.x が最高で、リクエスト レートは SpringBoot の 2 倍、Dropwizard の 3 倍です。データベース クエリ: SpringBoot の HibernateORM は Vert.x や Dropwizard の ORM よりも優れています。キャッシュ操作: Vert.x の Hazelcast クライアントは、SpringBoot や Dropwizard のキャッシュ メカニズムよりも優れています。適切なフレームワーク: アプリケーションの要件に応じて選択します。Vert.x は高パフォーマンスの Web サービスに適しており、SpringBoot はデータ集約型のアプリケーションに適しており、Dropwizard はマイクロサービス アーキテクチャに適しています。

スマートフォンの普及に伴い、携帯フィルムは欠かせないアクセサリーの一つとなりました。耐用年数を延ばすには、携帯電話の画面を保護する適切な携帯電話フィルムを選択してください。この記事では、読者が自分に最適な携帯電話フィルムを選択できるように、携帯電話フィルムを購入する際のいくつかのポイントとテクニックを紹介します。携帯電話フィルムの素材と種類を理解する:PET フィルム、TPU など。 携帯電話フィルムは強化ガラスを含むさまざまな素材でできています。 PETフィルムは比較的柔らかく、強化ガラスフィルムは耐傷性に優れ、TPUは耐衝撃性能に優れています。選択する際は、個人の好みやニーズに基づいて決定できます。画面の保護の程度を考慮してください。携帯電話のフィルムの種類によって、画面の保護の程度も異なります。 PETフィルムは主に傷防止の役割を果たしますが、強化ガラスフィルムは落下耐性に優れています。より良いものを選ぶことができます

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

C++ マルチスレッドのパフォーマンスを最適化するための効果的な手法には、リソースの競合を避けるためにスレッドの数を制限することが含まれます。競合を軽減するには、軽量のミューテックス ロックを使用します。ロックの範囲を最適化し、待ち時間を最小限に抑えます。ロックフリーのデータ構造を使用して同時実行性を向上させます。ビジー待機を回避し、イベントを通じてリソースの可用性をスレッドに通知します。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。
