当我阅读this tutorial时,我注意到以下关于在C#中使用结构的性能提示:
除非您需要参考类型 语义,一个较小的类 超过16个字节可能更有效 由系统处理为结构。
我在stackoverflow中查找了类似的问题,我在ADO.Net,Networking,Streams中找到了一些关于性能最佳做法的问题,但没有找到关于性能最佳做法的问题。 C#(语言)。
我想添加关于使用整数类型的另一个提示:
运行时优化性能 32位整数类型(Int32和 UInt32),所以使用这些类型 计数器和其他频繁访问 积分变量。
答案 0 :(得分:13)
简单地说:个人资料。
每个应用都不同。如果不是你app中的瓶颈,花点时间减少一些代码以使其“更有效”是没有意义的。此外 - 如果您没有数字来支持更改,您甚至可能会使事情更糟。
在大多数情况下,IO是关键点,所以考虑IO是一个明智的选择。同上DB访问。但除此之外:衡量它。
答案 1 :(得分:11)
答案 2 :(得分:3)
答案 3 :(得分:2)
在非特殊情况下不要使用例外。
答案 4 :(得分:1)
不仅仅是在C#中,而是在任何鼓励你创建大量数据结构类的OO语言中,可能需要一些性能调优和分析经验来学习这一点,但保持简单不仅仅是一个广场。
必须尽量减少所拥有的类的数量,最大限度地减少数据的冗余,特别是尽量减少通知式更新的使用,以尽量保持数据的一致性。
如果数据结构的不同组件需要保持一致,那么最好能够容忍暂时的不一致,而不是通过通知尝试使事情保持一致。
数据结构中出现的许多复杂情况都源于一种模糊但普遍的愿望,即使其“更有效”,例如交叉链接数据结构,以便通知可以实现即时更新。这不仅会使代码变得非常复杂,而且会导致错误,但是当您进行性能调优时,您会发现这些结构可能是最大的性能杀手。
答案 5 :(得分:0)
避免在循环中装箱和拆箱。
例如,使用List而不是ArrayList。通用集合不仅类型安全,而且当您将它们与值类型一起使用时,它们也比非泛型集合更快。
答案 6 :(得分:0)
我可以列举很多性能优化:
等。
答案 7 :(得分:0)
在许多应用中,尤其是网络应用,您的应用会将大部分时间花在数据库上。 (这不是特定于C#的)使用分析工具来确保您没有长时间运行的数据库查询,选择好的索引,并在适当的地方使用预先加载来减少必须进行的数据库请求的数量。这可能是您可以做的最大的事情,以提高使用数据库,C#或其他方式的应用程序的性能。
答案 8 :(得分:0)
如果您订阅了来自对象“B”的对象“A”上的事件,请确保在“B”更改之前取消订阅“A”中的“B”事件,否则,“B”可能永远不会获得GC “d。
答案 9 :(得分:0)
在执行大量操作时尽可能避免字符串操作(lookups,.Contains(“blah”)等)。在可能的情况下删除这些操作时,我发现了显着的性能增强。