PHP 開発の経験: 引用は悪い習慣です_PHP チュートリアル
PHP プログラムを作成するとき、多くの人はパラメーターを渡すときに参照を使用することを好みます。特に配列が非常に大きい場合は追加するのが好きです。
関数 binsearch(&$arr, $key, $value)
{
$low = 0;
$high = count($arr);
$item = $arr[$mid][$key]; $item == $value) {
return $mid;
} else if ($value > $item) {
$low = $mid + 1; else {
$high = $mid
}
}
false を返す
}
ここでは、整数のオーバーフローを防ぐために、$mid は最初に減算してから加算する方法を使用して計算されます。複雑にするつもりはありませんでした。
テストには次のコードを使用しました:
$data = array();
for ($i = 0; $i {
$data[] = array("sq" => $i * 2); var_dump(binsearch($data, "sq", 10000));
binsearch を実行すると、常に約 0.2 秒かかることがわかりました。理論的には、100 万のデータを最大 20 回循環できます。どうしてこんなに遅いのでしょうか?
後でメモリを監視したところ、データ配列が 230M のメモリを占有していることがわかりました。 binsearch を実行すると、60K のメモリが占有されました。ただし、理論的には、binsearch
それほど多くのメモリを消費しないはずです。なぜなら、参照を使用しており、データ構造をまったく変更していないからだと思います。
その後、参照パラメータを削除したところ、参照に多くの CPU リソースが消費されたようで 0.0002 秒しかかかりませんでした。
PHP は内部的にコピーオンライトの原則に従います。実際、この参照は冗長です。
しかし、参照を追加すると速度が低下するのはなぜですか?今日はこの問題に焦点を当てます。真実を理解した後は、誰もが引用の使い方を知る必要があります。
binsearch を呼び出す前に $a = &$data を直接設定すると、この参照の速度が非常に速くなります。この問題は参照自体が原因ではないようです。
この質問は実際には、zend エンジンが PHP 変数をどのように管理するかに関するものです。
合計 2 ページ:
前のページ
1
- 2
- 次のページ
- http://www.bkjia.com/PHPjc/364508.html
true

ホット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 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
