我的C#蛮力程序在运行时使用20%的CPU。我只使用1 Backgroundworker。如果我将这个任务分成几个部分并将其插入到7-8个背景工作者中,那么速度会更快,并且使用更多的CPU?几个BackgroundWorkers的蛮力更快?
回答
简短的答案也许。
长的答案是,这取决于多种因素:
是您的任务CPU绑定,如果它不是CPU阻碍了任务,然后多线程可能不会帮助。
多少个内核确实你的处理器已经和它有超线程:如果只有一个线程,试图多线程实际上会慢下来;如果它有更多的话,你可以在你的程序中使用尽可能多的线程,就像你在OS中可用的那样。 (我建议你使用
Environment.ProcessorCount
值来确定你开始的线程数)。- 需要发生多少交叉线程同步。如果您的线程正在等待写入锁定的共享变量或在它们之间传递数据,那么它可能会减慢应用程序的速度。
我的主要建议是要测试一下吧!
你可以很容易的时间代码段的执行时间相当精确地使用直观Stopwatch
类。
最后,你可能想使用Thread[]
而不是背景的工人,一般要尝试,这些有较低的费用等等都稍快。
谢谢。目前正在测试它... – KotMaster
使用分析器,例如ANTS Performance Profiler或VS内置的功能还有助于理解性能。 –
我测试了单词“堆栈”。一次只有1个Backgroundworker,第二次使用5. Backgroundworker 1搜索长度为1的单词。background worker 2用于长度为2的单词等等。
Word: stack
Backgroundworker Time
1 1min 8sec
5 35sec
- 1. 蛮力力 - C#
- 2. 蟒蛇蛮力?
- 3. 蛮力脚本
- 4. 蛮力与NULLs
- 5. 蛮力攻击
- 6. 蛮力优化
- 7. 蛮力HMAC
- 8. java中的蛮力
- 9. 蛮力一个密码锁
- 10. MySQL蛮力攻击
- 11. matlab循环蛮力
- 12. CUDA蛮力乐趣
- 13. MD5蛮力加速
- 14. MATLAB蛮力索引
- 15. GPU蛮力实现
- 16. Python的RSA蛮力检查
- 17. 在Matlab中的蛮力
- 18. 蛮力我的gpg密码
- 19. 这个蛮力算法NP-hard?
- 20. 创建一个迭代器来蛮力
- 21. Perl - 创建一个蛮力列表
- 22. 解释蛮力算法
- 23. 蛮力攻击(解密)AES
- 24. 并行蛮力算法
- 25. iptables SSH蛮力保护
- 26. 蛮力识别英语
- 27. C蛮力递归函数
- 28. 蟒蛇scipy蛮力优化
- 29. 蛮力搜索优化
- 30. 幻方蛮力算法
你试过吗? – Fabio
还没有。但也许你们中的任何人都可以在我尝试之前给我一个答案。 – KotMaster
@AxelKemper不是必需的,即20%的CPU使用率可以很容易地是单核的整体... –