基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化

2023-06-13,,

回到目录

LazyInitializer.EnsureInitialized是frameworks4.0引入的新东西,实现对属性延时初始化的功能,它作用在System.Threading命名空间下,所以,它与多线程有着密切的关系,即当多人同步使用这个方法时,对存储的对象有着某种作用,这是msdn的相关说明:

这个方法可以用于多个执行者初始化Target目录对象。

在多个执行者同时存取这个方法的情况下,可能会建立多个T执行个体,但只有一个执行个体会存储至target。在些类情况下,这个方法将不会放置未储存的对象。如果这类对象必须被放置,则由呼叫端判断未使的对象,然后再对物件进行适当的放置。

对于概念不清楚的同步,没有关系,看下面的例子如完全明白了,呵呵

下面的实例介绍了对属性的两个初始化,并进行比较,延时初始化的好处,即在对象使用时再去初始化它当一个方法体中,如果一个对象初始化了一次,不要再进行重复的初始化工作。

代码1,展现了性能不好的情况

代码2,展现了优化的情况

代码3,微软为了我们进行了封装,在多线程中表现更好

代码1

  class TestLazyInitializer1
{ public People People
{
get
{ return new People(); }
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

代码2:

 class TestLazyInitializer2
{
People _people;
public People People
{
get
{ return _people == null
? (_people = new People())
: _people; }
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

代码3

 class TestLazyInitializer
{
private People _people;
/// <summary>
/// 延时初始化指定属性
/// </summary>
public People People
{
get
{
return LazyInitializer.EnsureInitialized(
ref _people, () =>
{
return new People();
});
}
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

而它们运行的结果,我们可想而知了,当一个类中多次使用同一个对象时,性能不好的,返回的Name(当前时间),肯定是不同的,而性能好的,只初始化一次的,返回的Name(当前时间)肯定是一个值,呵呵。

aaarticlea/png;base64,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" alt="" />

感谢阅读!

回到目录

基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化的相关教程结束。

《基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化.doc》

下载本文的Word格式文档,以方便收藏与打印。