随笔分类 - 高性能的.NET
致力于性能
摘要:带着问题去思考!大家好 今天我们继续优化。 避免对象固定 对象固定(Pinning)是为了能够安全地将托管内存的引用传递给本机代码,最常见的用处就是 传递数组和字符串。如果不与本机代码进行交互,就完全不应该有对象固定的需求。 对象固定会把内存的地址固定下来, 垃圾回收器就无法移动这些对象,会增加内存
阅读全文
摘要:带着问题去思考!大家好 上次我们讲到GC的一些基础知识,感谢评论的大佬给我指点。 配置参数 关于配置垃圾回收器的方法不是很多,所以建议不要随意去动,垃圾回收器的配置以及调优,很大程度上由硬件配置,可用资源和程序的行为决定。屈指可数的几个参数也是用于控制很高层的行为,主要取决于程序的类型, 工作站模式
阅读全文
摘要:带着问题去思考!大家好 相对.NET 来说。CLR去处理了,C,C++这些就需要手动去垃圾回收。 GC大部分容易察觉的性能问题。其实很多问题实际是哪个都是由于对垃圾回收器的行为和预期结果理解有误。在,NET环境中,你需要更多的关注内存的性能,那么接下里我们主要是讲内存性能问题。 GC实际上会调整体提
阅读全文
摘要:带着问题去思考!大家好 性能问题是架构前想的还是之后想的?评估什么? 在设计阶段时,你需要理解整体架构和约束条件,不然你就回遗漏一些关键点,这将严重制约程序的运行,设计阶段就把性能目标预先考虑进去。当然安全问题也是一样的。一旦项目进入测试,部署和维护阶段,就得把更多的经理投入到微观优化,具体代码方式
阅读全文
摘要:上次我们讲到了集合。说到集合,那往往少不了循环。今天我们说下什么是并行循环 Parallel.For,Paraller.Foreach (System.Threading.Tasks) 相信大家对此都不陌生。 long sum = 0; Parallel.For(0, MaxValue, (i) =
阅读全文
摘要:那些年你用的集合 .NET有超过20种内置的集合类型,.NET Framework中有些集合只是为了保持向后兼容性,新的代码种绝不应该再去使用以下集合 ArrayList Hashtable Queue SortedList Stack ListDictionary HybridDictionary
阅读全文