首页 新闻 会员 周边 捐助

日志工具类多进程版如何优化?

0
悬赏园豆:50 [已解决问题] 解决于 2022-05-20 10:35

自己写了一个日志工具类LogUtil,单进程版测试和NLog性能一样,多进程版比NLog慢一倍以上,对照NLog,请问NLog多进程写日志比LogUtil快一倍以上的原因?同样使用了Mutex互斥量,NLog还有哪些机制使得它能快一倍以上?

源码和LogUtil、NLog测试代码地址:https://gitee.com/s0611163/LogUtil

需要优化的代码是LogUtilUseMutex.cs

0611163的主页 0611163 | 初学一级 | 园豆:148
提问于:2022-05-19 09:38
< >
分享
最佳答案
0

性能问题已解决,git记录中搜"【重要优化】 "查看优化记录,代码架构没变化,只修改了细节,主要是使用FileStream自带的锁,而不是写入时自己用Mutex加锁,也不需要调用Flush。

0611163 | 初学一级 |园豆:148 | 2022-05-19 18:55
其他回答(2)
0

你的多进程是同时2个进程写磁盘吗,这样是不能提高性能的
我记得高性能的日志是要建立一个缓存,一个进程向缓存中写数据,另一个线程定时将缓存中的数据刷到磁盘上

收获园豆:25
WmW | 园豆:424 (菜鸟二级) | 2022-05-19 10:16

我不是一味的追求高性能,我看了NLog源码,觉得NLog和我的实现方式没有本质区别,但为什么NLog比我的快1-2倍,我想找出这个原因。当然NLog源码我看的也不是很明白,希望有熟悉的能解答一下,NLog使用了什么机制,使得它比我的快很多?
你说的缓存,或者我知道的什么缓冲、双缓冲,都不在我的考虑范围内,我不是一味追求高性能,只是想找出这一个问题点的原因。

支持(0) 反对(0) 0611163 | 园豆:148 (初学一级) | 2022-05-19 12:13
0

思路: 多进程同时写一个文件,采用方法--->主进程负责写,其他进程负责发送数据到主进程

收获园豆:25
[秦时明月] | 园豆:738 (小虾三级) | 2022-05-19 10:19

多进程,每个进程是独立的,我随时会关闭任意进程,而不能影响其它进程的日志写入。NLog源码中搜pipe和socket,我确定对于这种写文件日志,NLog没有使用这样的方式。

支持(0) 反对(0) 0611163 | 园豆:148 (初学一级) | 2022-05-19 12:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册