C++ パフォーマンス分析 (3): ヒープ オブジェクトとスタック (自動) オブジェクト、heapstack_PHP チュートリアル
C++ パフォーマンス分析 (3): ヒープ オブジェクト vs. スタック (自動) オブジェクト、ヒープスタック
一般に、パフォーマンスの向上は 90 ~ 10 の法則であると考えられています。つまり、コードの 10% が 90 の責任を負っています。パフォーマンスの問題の割合。大規模なソフトウェア プロジェクトを行ったプログラマは、通常、この概念を知っています。
ただし、ソフトウェア エンジニアにとって、10% に属するか 90% に属するかに関係なく、一部のパフォーマンスの問題は改善する必要があります。ここでは、問題の 1 つである、ヒープを使用するかスタックを使用するかについて説明します。
Java、C#、および JavaScript のプログラマーは、通常、作成したオブジェクトがヒープにあるかスタックにあるかを気にしません。これらの言語では、オブジェクトはヒープ内でのみ「存在」できるからです。プログラマーにとって、これは間違いなくはるかに簡単です。ただし、C++ プログラマーの場合は、オブジェクトを作成する場所を 3 つ選択できます:
- プログラムのデータセクション
- 仕事の積み重ね
- ヒープ
オブジェクトはどこに住めばよいですか?この問題は、アプリケーションのプロパティによって決定する必要があります。たとえば、動的に生成されたグローバル変数の場合、ヒープ内に存在する以外に方法がない場合があります。
ただし、複雑なデータのキャリアとして一時オブジェクトを選択するなどの選択肢があれば、答えは明らかです。たとえば、次の単純な例はスタックの方が好ましいです。
A e // ヒープ vs スタック テスト
double HeapVsStack(bool ヒープ、int ループ、int &result) {
if (ヒープ)
{
Clock_t begin = Clock();
for(int i = 0; i { intPair *p = new intPair(1,2);
~
Clock_t end = Clock();
return double(end - begin) / CLOCKS_PER_SEC;
} その他
{
Clock_t begin = Clock(); for(int i = 0; i {
return double(end - begin) / CLOCKS_PER_SEC;
このプログラムに対して次の簡単なテスト呼び出しを行います: int 結果 = 0; printf("ヒープ時間: %f n", HeapVsStack(true, 100000, result)); printf("スタック時間: %f n", HeapVsStack(false, 100000, result)); 時間の違いが大きすぎるため、100,000 回呼び出す必要がありました。スタックのユースケースでは 10,000 回未満で 0ms が表示されました。
結論:
1) アプリケーションロジックが許可する場合は、スタックベースの自動変数を使用し、ヒープ変数は決して使用しないでください。
Seattle スタックとヒープの割り当て true
実行中のプログラムに対してコンピューターのメモリはどのように構成されますか? プログラムがメモリにロードされると、テキスト セグメント、スタック セグメント、ヒープ セグメントというセグメントと呼ばれるメモリの 3 つの領域に編成されます。テキスト セグメント (コード セグメントとも呼ばれる) は、プログラム自体のコンパイル済みコードが存在する場所であり、プログラムを構成するすべての関数 (ユーザー定義およびユーザー定義の両方) が含まれます。 system.
システム メモリの残りの 2 つの領域は、コンパイラによってデータ ストレージ用にメモリが割り当てられる場所です。スタックは、関数内の自動変数にメモリが割り当てられる場所です。スタックは、Last In First Out (LIFO) ストレージ デバイスです。新しいストレージは、スタックのトップと呼ばれる 1 つの「端」でのみ割り当てられ、割り当てが解除されます。これは、プログラムが関数 main() で実行を開始するときの図 14.13 に示されています。図 14.13(a) に示すように、main() 内で宣言されたすべての変数に対してスペースがスタック上に割り当てられます。main() が関数 func1() を呼び出すと、追加のストレージが func1() の変数に割り当てられます。スタックの一番上に...テキストの残り>>
ヒープメモリとスタックメモリの違いは何ですか?
http://www.bkjia.com/PHPjc/868462.html
www.bkjia.com

ホット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)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています
