「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ChatGPT は、大規模なデータセットに対して PHP ジェネレーターを使用した場合と使用しない場合のメモリ使用量を比較しました。

ChatGPT は、大規模なデータセットに対して PHP ジェネレーターを使用した場合と使用しない場合のメモリ使用量を比較しました。

2024 年 8 月 5 日に公開
ブラウズ:422

ChatGPT compared the memory usage with and without PHP generators for large datasets.

ジェネレーターを使用した場合と使用しない場合のメモリ使用量を視覚化すると、効率の利点を理解するのに役立ちます。以下は 2 つのシナリオでのメモリ使用量の比較です:

  1. ジェネレーターを使用しない (すべてのデータを一度にメモリにロードします)。
  2. ジェネレーターの使用 (一度に 1 つのアイテムをロード)。

シナリオ 1: 発電機なし

0 から 999,999 までの数値の配列を返す単純な関数があるとします。この関数は、すべてのデータを一度にメモリにロードします。

メモリ使用量 (ジェネレータなし)

関数 getNumbersArray が呼び出されたとき:

  • 初期メモリ: メモリが少なく、関数と環境設定のみがメモリ内にあります。
  • 実行中: ループが実行されると、メモリ使用量は直線的に増加し、1,000,000 個の数値すべてが配列に保持されます。
  • ピーク メモリ: 非常に高く、すべてのデータをメモリに同時に保持します。
  • 実行後: スクリプトが終了するか、配列が明示的に設定解除されるまで、メモリはハイのままです。
|            Memory Usage Without Generators           |
|------------------------------------------------------|
| Start    | *                                         |
|          | **                                        |
|          | ***                                       |
|          | ****                                      |
|          | *****                                     |
|          | ******                                    |
|          | *******                                   |
| ...      | ******************************************|
| End      | ******************************************|
|------------------------------------------------------|

シナリオ 2: ジェネレーターの使用

次に、ジェネレーター関数を使用して、一度に 1 つずつ数値を生成します。

メモリ使用量 (ジェネレータの使用)

ジェネレータ関数numberGeneratorが呼び出されたとき:

  • 初期メモリ: メモリが少なく、関数と環境設定のみがメモリ内にあります。
  • 実行中: 一度にメモリに保持される数値は 1 つだけであるため、メモリ使用量は低く抑えられます。
  • ピーク メモリ: 低、1 つの項目とジェネレータのオーバーヘッドのみ。
  • 実行後: 反復終了直後にメモリ使用量が減少します。
|            Memory Usage With Generators              |
|------------------------------------------------------|
| Start    | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
| ...      | *                                         |
| End      | *                                         |
|------------------------------------------------------|

まとめ

  • ジェネレーターなし: メモリ使用量はデータセットのサイズとともに増加し、スクリプトの実行中は高いままです。
  • ジェネレーターあり: 一度に 1 つのアイテムのみが処理されるため、データセットのサイズに関係なく、メモリ使用量は一定で低く抑えられます。

ジェネレーターは、一度に 1 つのアイテムを生成し、スクリプトの実行全体を通じてメモリ使用量を低く維持することにより、特に大規模なデータセットでメモリ効率に大きなメリットをもたらします。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/saaberdev/chatgpt-explained-how-we-can-optimize-memory-usage-by-using-php-generators-for-large-datasets-4e5h?1If there何らかの侵害がある場合は、削除するには[email protected]までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3