C#性能优化随记

2019年我在用C#重新influxdb内核后优化性能时发过几篇性能优化的文章,最近又发现了几处瓶颈,在此记录一下。

1. 集合处理时可以使用Parallel并发处理来提高性能

程序内部的集合类型普遍采用了Concurrent并发安全的,在写入接口收到一组数据时(Dictionary<点key, values>),之前的做法是foreach()遍历处理,现在修改为Parallel.Foreach()处理,Parallel会根据CPU的核心数开辟并发数,测试下来一个177M的wal文件写入从22分钟缩短到了3分6秒,性能提高了6倍。

2. 链表结构性能低下,建议使用集合(List)

接近了问题1后,用性能探查发现50%的CPU消耗在了一个不起眼的链表结构上,百度一下发现是链表结构的内存访问性能差,不如集合这种直接内存索引的方式,修改后几乎见不到这部分CPU消耗了。

3. 学会使用性能探查器

用性能探查器记录的CPU数据需要在图上框选一段时间,否则看到的数据就是程序初始运行的CPU占用,而不是程序长时间运行的CPU占用。看到CPU占用后,找到热点代码就可以发现问题了。我的问题1、2都是这么发现的。

4. 用好Copilot

最近一有问题就先问Copilot,基本能帮你把问题一条条列出来,还能给出优化后的代码,只是免费的有次数限制,这个月的已经早早用完了。

相关推荐
lly20240623 分钟前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨24 分钟前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn99925 分钟前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏49427 分钟前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
功德+n1 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨1 小时前
python扫码登录dy
开发语言·python
我是唐青枫1 小时前
C#.NET gRPC 深入解析:Proto 定义、流式调用与服务间通信取舍
开发语言·c#·.net
JJay.1 小时前
Kotlin 高阶函数学习指南
android·开发语言·kotlin
bazhange1 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
jinanwuhuaguo1 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin