Functional-programming-lazy-evaluation

提供:Dev Guides
移動先:案内検索

関数型プログラミング-遅延評価

遅延評価は、値が必要になるまで式の評価を保持する評価戦略です。 評価の繰り返しを避けます。 Haskell は、基本が遅延評価に基づいている関数型プログラミング言語の良い例です。

遅延評価はUnixマップ関数で使用され、必要なページのみをディスクからロードすることでパフォーマンスを改善します。 残りのページにはメモリは割り当てられません。

遅延評価-利点

  • 言語ランタイムは、式の最終結果に直接リンクされていない部分式を破棄できます。
  • 一時的な計算と条件を破棄することにより、アルゴリズムの時間の複雑さを軽減します。
  • プログラマーは、循環依存関係がない限り、データ構造のコンポーネントを初期化後に順不同でアクセスできます。
  • アクセス頻度の低いデータのロードに最適です。

遅延評価-欠点

  • thunks (遅延オブジェクト)を作成することにより、最終結果で必要になるまで、言語ランタイムに部分式の評価を保持させます。
  • 場合によっては、アルゴリズムのスペースの複雑さが増します。
  • 実行前に大量の式が含まれているため、パフォーマンスを見つけるのは非常に困難です。

Pythonを使用した遅延評価

Pythonの range メソッドは、遅延評価の概念に従います。 より大きな範囲の実行時間を節約し、一度にすべての値を必要とすることはないため、メモリ消費も節約します。 次の例を見てください。

r = range(10)
print(r)
range(0, 10)
print(r[3])

それは次の出力を生成します-

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3