Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 多线程支持 & 自动跳过已经解锁的音乐 #1

Merged
merged 2 commits into from
Aug 11, 2023

Conversation

Jasonzyt
Copy link
Contributor

@Jasonzyt Jasonzyt commented Jun 13, 2023

效果测试:

Intel Xeon L5420 + 6GB DDR2 + WD SATA HDD 各77首对比 ![image](https://github.com/Majjcom/ncmpp/assets/66063199/0d390d0c-7ea6-4c34-bf84-17bc4fd19254) 各12/24/48首对比 ![image](https://github.com/Majjcom/ncmpp/assets/66063199/1c96f087-a694-4f4b-8815-f8a0e6c941e9)
Intel Core i5-13600K@3.5GHz + 32GB DDR5 + 7000MB/s NVMe SSD https://github.com//pull/1#issuecomment-1674297027

@Initial-heart-1
Copy link

你似乎尝试使用全部可用的线程,这可能不太理想,因为计算机上通常不止有 ncmpp 在运行,而 ncmpp 毫无疑问的是计算密集型任务,故此举可能严重影响调度开销。
建议交由用户指定线程,或者在用户要求的情况下才尝试使用全部的线程。
(就普普通通的建议一下,改 ncmdump 给我改自闭了,Github 翻过来的,clone&build 了,好用的,OW 近期似乎不活跃)

@Initial-heart-1
Copy link

Initial-heart-1 commented Aug 9, 2023

另外的,根据你的截图,不知道你是否观察到当处理的文件变多时,你的方案效率与原方案差距正在缩小,我认为这可能也是因为使用的线程过多所致的,我认为这可能是因为线程过多导致 IO 速率陷入瓶颈,反而降低了工作效率。
另有一个新角度,这可能是因为进程的调度优先级被系统降低所致的,当然我认为也是因为使用的线程过多。

@Majjcom
Copy link
Owner

Majjcom commented Aug 9, 2023

不过说实话,对于普通用户来说,单线程的速度已经完全足够了。
这部分feature等有空再merge吧。
多线程计划在ncmppGui内启用。

@Initial-heart-1
Copy link

Initial-heart-1 commented Aug 9, 2023 via email

@Jasonzyt
Copy link
Contributor Author

Jasonzyt commented Aug 11, 2023

毕竟CPP,但是讲道理还是没有发挥设备的最佳性能,多线程之后现在压力才来到了IO这边 事实上还是有用的,现在这份不考虑调度影响(在文件较少的时候)可以看到明显的效率提升。 主要就是对线程数量的处理,搞定看起来就没有其他问题了,应该可以 merge Message ID: @.***>

我觉得是我测试机器的问题,十五年上古神机Xeon L5420 + 6GB DDR2
昨天把新机装好了 今天抽空测下

@Initial-heart-1
Copy link

omg,比我测试平台还离谱,我这辈子没摸着过DDR2(汗)
我测试平台也不是很行,但是得到的成绩还是相当不错的
G3258+8GB D3 168MB数据5个文件在东芝MLC msata SSD上双线程跑出了0.57s

@Initial-heart-1
Copy link

单线程带计时的版本我这里没有,也懒得再 clone 一份下来测了,目测是存在25~50%的效率提升

@Majjcom
Copy link
Owner

Majjcom commented Aug 11, 2023

毕竟CPP,但是讲道理还是没有发挥设备的最佳性能,多线程之后现在压力才来到了IO这边 事实上还是有用的,现在这份不考虑调度影响(在文件较少的时候)可以看到明显的效率提升。 主要就是对线程数量的处理,搞定看起来就没有其他问题了,应该可以 merge Message ID: @.***>

我觉得是我测试机器的问题,十五年上古神机Xeon L5420 + 6GB DDR2 昨天把新机装好了 今天抽空测下

这机子有点离谱

@Initial-heart-1
Copy link

甚至能跑win10(或winserver2016及以上),感觉Microsoft的超级屎山还是堆的牛逼

@Majjcom
Copy link
Owner

Majjcom commented Aug 11, 2023

有没有什么方法可以根据CPU线程数和IO上限来计算出最适合的线程数

@Initial-heart-1
Copy link

有没有什么方法可以根据CPU线程数和IO上限来计算出最适合的线程数

没必要,对于这个项目太重了,而且也得具体情况具体分析,直接交给用户手动输入就好

@Jasonzyt
Copy link
Contributor Author

果然是我机器太老的原因
i5-13600k 实测
before:
image
多线程:
image
长存牛逼

@Jasonzyt
Copy link
Contributor Author

我这个数量级的歌曲cpu基本波澜不惊,我复制一下看看

@Jasonzyt
Copy link
Contributor Author

Jasonzyt commented Aug 11, 2023

image
image
跑满的话差不多1千首2s
image

@Majjcom
Copy link
Owner

Majjcom commented Aug 11, 2023

多线程

屏幕截图 2023-08-11 154713

单线程

屏幕截图 2023-08-11 154743

测试平台是R7945HX,差距还是很明显的

@Majjcom
Copy link
Owner

Majjcom commented Aug 11, 2023

多线程

屏幕截图 2023-08-11 154713

单线程

屏幕截图 2023-08-11 154743

测试平台是R7945HX,差距还是很明显的

测试数量不太够

@Majjcom Majjcom merged commit 42c9ec3 into Majjcom:main Aug 11, 2023
@Majjcom
Copy link
Owner

Majjcom commented Aug 11, 2023

修改已合并

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants