.NET 性能优化的技巧
现代cpu依赖于长pipeline的指令,这些指令通过并发性进行处理。这涉及到CPU分析指令,以确定哪些指令不依赖于前面的指令,还涉及猜测将采用哪些条件跳转语句。为此,CPU使用一个名为分支预测器(branch predictor)的组件,该组件负责猜测将采用哪个分支。它通常通过读取和写入表中的条目来实现这一点,并根据上次执行条件跳转时发生的情况修改其预测。 当预测正确时,就会加快进程,否则就需要把预测分支的指令排空,重新获取正确分支的指令进入pipeline继续执行。 所以加快进程的最好办法就是减少分支和分支错误预测,首先尝试最小化分支数量,如果无法消除分支,请尽量减少错误预测率,这可能涉及使用排序数据或重构代码,可以用查找的办法来代替分支预测。 其他杂项提示 1. 避免使用LINQ,LINQ在应用程序代码方面很出色,但在库/框架代码中很少被用于路径。LINQ很难对JIT进行优化(IEnumerable 2. 使用具体类型而不是接口或抽象类型,也许最常见的是,如果你在List 3. 反射在库代码中特别有用,缓存反射结果,考虑使用IL或Roslyn为访问器生成委托,或者更好的方法是使用现有的库,如Microsoft.Extensions.ObjectMethodExecutor.Sources,Microsoft.Extensions.PropertyHelper.Sources或FastMember。 特定于库的优化 优化生成的代码 Hagar使用Roslyn为要序列化的POCO生成C#代码,这个C#代码在编译时包含在你的项目中。我们可以对生成的代码执行一些优化,以加快速度。 通过跳过对已知类型的编解码器查找来避免虚拟调用 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |