MSDN仍然是最全面的知识库。
今天编写一个.NET CF 下的程序,为了尽可能的提高程序的性能,又搜索了到下面这篇文档,其实,微软告诉了我们很多有效的技巧。
温故而知新啊!
如何:提高性能
以下编程做法可以节省内存和改善设备应用程序的性能。
使用 Windows 窗体和图形节省内存
使用数据和字符串节省内存
-
在 for 循环中使用整数变量(Int32 或 Int64),而不使用对象变量。
-
避免使用枚举的 ToString 方法,因为它会搜索元数据表,从而影响性能。
-
避免 OutOfMemoryException 错误。如果没有足够的内存分配给内部使用或分配给新对象实例,公共语言运行库可能会引发此异常。要避免此异常,应避免编写占用 64K 或更多内存的大方法。
-
移除 System.SR.dll,它包含异常对话框的错误信息字符串。部署应用程序时可以不使用此文件,从而节省内存。如果存在 System.SR.dll,则 .NET Compact Framework 将动态加载 System.SR.dll 中包含的错误字符串。
如果设备中不存在此 .dll 文件,则所有异常都包含消息“无法加载资源程序集”。不过,在开发期间将 System.SR.dll 引用添加到 Microsoft Visual Studio 2005 项目中总是有用的,因为这样您将看到有意义的异常。
-
字符串是不可变的,因此,每次修改该字符串时都会创建新的 String 对象。构造需经常修改的字符串时,请考虑使用 StringBuilder。
-
如果您知道用于 DateTime 序列化的确切格式,请为 DateTime 使用 ParseExact 方法。否则,DateTime 分析器将按顺序尝试应用多个特定于区域性的格式。
-
限制打开 SqlCeCommand 对象的数量,并在完成后释放它们。
与本机代码进行交互时节省内存
在集合中节省内存
在 XML 中节省内存
使用 Web 服务时节省内存
-
读取和编写 DataSet 时,应使用 DiffGram。有关更多信息,请参见 DiffGram。
-
以 XML 格式将远程 DataSet 及其架构保存到设备。
-
初始屏幕期间创建一个简单的 Web 服务方法调用,因为第一个调用比后面的调用要慢。
-
小心处理网络和数据错误。
-
某些情况下,可以手动将 DataSet 序列化为 XML 字符串,然后执行一个 Web 服务调用,这样可以提高性能。
在高级编程中节省内存
-
异步处理大操作。
-
避免虚拟调用。.NET Compact Framework 运行库虚拟调用比静态调用或实例调用大约慢 30%。由于资源受约束,.NET Compact Framework 不使用 vtable,因此必须通过转换类和接口层次结构来调用方法,但这是一种代价很高的操作。.NET Compact Framework 维护已解析的虚拟调用的缓存,因此在大多数情况下,无须重新解释调用。
-
尽可能使用字段而不使用属性。
-
定义值类型时,重写 GetHashCode 和 Equals 方法。如果未重写它们,则运行库会在基 ValueType 类中使用这些方法的普通版本。
-
谨慎使用映射。出于调研目的将映射与非实例化类一起使用会影响应用程序中的实例化对象的性能。
-
确保 RESX 文件中的托管资源具有完全限定名,并且这些资源准确无误。它们必须具有正确的版本和 PublicKeyToken 字段。为未正确指定的类型查找最合适的替代类型会影响性能。
-
请注意,在某些情况下,直接从文件读取应用程序数据就足够了,这比使用 ResourceManager 效率更高。ResourceManager 可以在定位您的二进制资源之前在文件系统中探测多个位置来查找最匹配的附属程序集。为作业使用适当的工具。
http://msdn2.microsoft.com/zh-cn/library/1766918e(VS.80).aspx
本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/sgsoft/archive/2007/07/05/807685.html,如需转载请自行联系原作者