Intro#
之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧
HttpClient 优化#
关于使用 HttpClient
,大概很多人都知道尽量使用单例以提升 HttpClient
的性能。
由于 HttpClient
在发送请求时需要进行域名解析,使用的时候第一次一般来说会慢一些,我们在 HttpClient
初始化完成之后,向目标地址发送一个 HEAD
请求,这样会把域名解析结果有一个缓存,实际去请求的时候所需用的域名解析的时间就会减少了,这样就可以提升第一次实际发送请求的速度。
HttpClient
的超时时间设置尽可能短以避免超长等待提升响应时间
同步操作优化#
原来的同步操作,可以改为异步处理的使用异步方法处理,
如查询数据库等操作大多可以改为异步操作,减少线程阻塞,进一步提高 CPU 的利用率。
多个任务的调度,可以不需要关心一个任务调度的话就可以同时启动任务而且无需等待。
数据结构优化#
在使用较多的 Model
处考虑 Model
中是否有较多的无用字段,如果有可以考虑用一个新的轻量级的 Model
,优化 Model
数据结构优化内存存储。
缓存#
重复使用的值缓存起来(根据数据需要选择使用缓存类型,变量缓存或内存缓存或redis等分布式缓存),减少数据库查询次数
Sql 优化#
-
如果需要同时插入许多数据,尽可能使用
BulkCopy
操作以提升性能 -
更新/查询条件优化,使用更准确的条件,尽可能使用主键查询和更新
-
批量更新数据的多次操作能够合并为一次操作的就合并为一次操作,不能合为一次操作就一次提交,注意防 Sql 注入
-
复杂 Sql 使用事务时,能在 Sql 中使用事务就在Sql中使用否则在代码中使用。使用事务时仅在需要开启事务的地方开启事务,事务结束就提交事务,不要在事务中掺杂不需要放在事务中处理的数据库操作
End#
感谢大师,跟着大师进行一次性能优化,确实学到好多,自己对一些概念也是理解的更加深入了。