使用MVVM Light工具包会不会影响性能?

Cra*_*rge 1 silverlight mvvm windows-phone-7

我一直在使用流行的MVVM Light工具包:这里用于创建我的Windows Phone应用程序,并对模式有疑问.对于每个创建的页面,我们都会创建一个新的视图模型,以使代码保持清洁并促进关注点的分离.但是,ViewModelLocator的构造函数包含每个viewmodel的实例化.

ViewModelLocator的构造函数通常如下所示:

public ViewModelLocator()
    {
        ////if (ViewModelBase.IsInDesignModeStatic)
        ////{
        ////    // Create design time view models
        ////}
        ////else
        ////{
        ////    // Create run time view models
        ////}

        CreateMain();
        CreatePage2();
        CreatePage3();
        CreatePage4();
    }
Run Code Online (Sandbox Code Playgroud)

如果应用程序包含一堆页面,即使对于那些可能永远不需要的视图,也不会实例化每个ViewModel会导致性能问题?

我在这里错过了什么吗?

Stu*_*art 8

对于任何开销或任何关于性能的担忧,测量开销/问题是个好主意.

确实,当通过.Net,C#,Silverlight,XAML,DataBinding和MVVMLight编写WP7时,你会插入大量的"开销" - 大部分开销都是为了方便编码器,而不是为了用户的利益.

然而,WP7 CPU,视频协处理器,快速RAM和快速SolidState内存都非常快 - 所以有一些开销的空间,你可以使用这些框架来创建令人愉快的,响应迅速的WP7应用程序.

无论如何都要担心性能 - 但最好通过测量来推动这些问题,找出需要优化的地方,或者需要隐藏其他UI功能背后的缓慢的地方.

一般来说,当我测量时,我发现我的性能瓶颈并不是我所期望的......我也发现总会有权衡 - 例如在你关注的问题上,权衡可能是在Locator构造代码运行较慢时,后来的查找代码可以更快地运行 - 因此应用内导航可以更快,但代价是稍微慢一点的启动时间.