假設我必須生成一堆結果文件,並且希望儘快完成。每個結果文件獨立於任何其他結果文件生成;實際上,可以說每個結果文件對每個其他結果文件都是不可知的。用於生成每個結果文件的資源也是唯一的。我怎樣才能動態地決定同時運行的最佳線程數目,以最大限度地減少整體運行時間?我唯一的選擇是編寫自己的線程管理器來觀察性能計數器並進行相應的調整,或者是否存在已經實現這一點的一些實體類?最大化線程數量以充分利用所有可用資源而不會影響整體性能
2
A
回答
4
沒有進一步的細節我會假設這個任務是I/O綁定,而不是CPU綁定,所以你可能只會增加我啓動多個線程的開銷。我會建議使用異步I/O,從而讓線程池處理細節。誠然,這可能不是最佳的解決方案,但它仍然是我的第一次嘗試,因爲它可能足夠好。
1
我會去做線程池和可能的異步文件操作。編寫自己的線程管理器很可能會比默認調度程序爲您做的更糟糕。
Here's a nice article顯示了一些你自己做的問題......你的代碼將不得不考慮像HyperThreading(它只給你虛擬CPU,而不是真正的核心,這樣的負載並不總是如預期的當看性能計數器)。
1
以多線程的方式做這件事真的不僅僅是導致上下文切換開銷?除非你有多張光盤寫入,否則不管你扔了多少個線程,你一次只能寫一張。
相關問題
- 1. 調整Storm-Crawler以充分利用可用資源
- 2. 充分利用資源
- 3. DB整理不區分大小寫 - 會影響性能嗎?
- 4. 最大化工作線程利用
- 5. 如何充分利用資源
- 6. 具有大整數值的變量是否會影響SMT的性能?
- 7. CSS:調整身體填充而不影響背景填充?
- 8. 騾子性能優化利用有限的資源
- 9. 使用數據屬性會影響應用程序的性能?
- 10. 加載大量的bundle是否會影響Symfony2應用程序的整體性能?
- 11. 在C#中創建大量線程對性能的影響應用程序
- 12. mysql中最大連接數會影響站點性能?
- 13. 數據庫(最大)字段長度是否會影響性能?
- 14. 大量使用信號和插槽會影響應用程序的性能嗎?
- 15. 會異步Rest API與線程調用影響性能?
- 16. 什麼軟件可以充分利用超線程?
- 17. 在主線程中創建字體會影響應用性能嗎?
- 18. 如何調用表中的值,而不會影響性能
- 19. 處理器數量是否會影響單線程程序的性能?
- 20. 充分利用Ajax響應
- 21. 控制檯應用程序的最小化會影響性能嗎?
- 22. 線程安全地更新共享對象而不會影響性能?
- 23. 優化Keras以使用所有可用的CPU資源
- 24. 可以在客戶端應用程序中使用ORM(EF或nHibernate)而不會影響性能
- 25. 可以最大尺寸的apk文件會影響應用程序的性能嗎?
- 26. 充分利用HTML源
- 27. 大型變量表的性能影響
- 28. 對類變量使用默認值而不是在c#中初始化它會有什麼性能影響嗎?
- 29. 擴大,而不會影響清晰度
- 30. 變量是否會影響性能?
請注意,您不僅受到CPU的限制,還受到磁盤讀寫速度 – Amirshk 2010-05-07 19:28:04