zoukankan      html  css  js  c++  java
  • Lazy initialization

    一个对象的延迟初始化意味着该对象的创建将会延迟至第一次使用该对象时 (在本主题中,术语"延迟初始化""延迟实例化"是同义词。) 延迟初始化主要用于提高性能,避免浪费计算,并减少程序内存要求。 以下是最常见的方案:

    • 有一个对象的创建开销很大,而程序可能不会使用它。 例如,假定您在内存中有一个 Customer 对象,该对象的 Orders 属性包含一个很大的 Order 对象数组,该数组需要数据库连接以进行初始化。 如果用户从未要求显示 Orders 或在计算中使用其数据,则没有理由使用系统内存或计算周期来创建它。 通过使用 Lazy<Orders> Orders 对象声明为延迟初始化,可以避免在不使用该对象的情况下浪费系统资源。
    • 有一个对象的创建开销很大,您想要将创建它的时间延迟到完成其他开销大的操作之后。 例如,假定您的程序在启动时加载若干个对象实例,但只有一些对象实例需要立即执行。 通过将不必要的对象的初始化延迟到已创建必要的对象之后,可以提高程序的启动性能。

    public partial class MainWindow : Window

    {

    Lazy<Test> _t1;

    Lazy<Test> _t2;

    public MainWindow()

    {

    InitializeComponent();

    // using empty constructor.

    _t1 = new Lazy<Test>();

    // using constructor with parameter.

    _t2 = new Lazy<Test>(() => new Test("a string"));

    }

    }

     

    class Test

    {

    public Test()

    {

    }

     

    public Test(string str)

    {

    _str = str;

    }

     

    private string _str;

    public string Str

    {

    get { return _str; }

    set { _str = value; }

    }

    }

  • 相关阅读:
    二叉搜索树与双向链表
    TCP 三次握手与四次挥手
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    从上往下打印二叉树
    栈的压入、弹出序列
    jenkins 持续集成和交付——一个构件小栗子前置(三)
    jenkins 持续集成和交付——gogs安装(外篇)
    jenkins 持续集成和交付——安装与账户安全还有凭证(二)
  • 原文地址:https://www.cnblogs.com/bear831204/p/2133872.html
Copyright © 2011-2022 走看看