我有一個函數讓我們稱之爲foo(),它對矩陣執行一些操作。 如果我在控制檯應用程序中調用該函數,則需要1秒才能返回結果。 如果我在Windows窗體應用程序中調用它(按鈕單擊,啓動一個新線程,從線程調用foo()),該函數需要3秒鐘返回。顯然具有相同的輸入和相同的輸出。 我認爲這是因爲處理Windows窗體的線程仍處於活動狀態,我該如何阻止它,或者減慢它的優先級?線程優先級和函數執行時間
回答
我不明白爲什麼要殺死表單事件線程。這會導致您的應用程序無法使用。該線程並不是運行計算密集型任務,而是等待表單上的事件,因此將優先級設置爲低電平幾乎沒有什麼收穫。
請說明您測量線程完成所花費的時間的精確程度。與啓動/停止線程相關的某些開銷不會出現在控制檯應用程序中。
我這樣做:clock_t finish(clock()); FOO(); clock_t finish(clock()); int n =完成 - 開始;在控制檯的情況下,值約爲1000,窗口的形式是3500左右。這聽起來真的很奇怪。這個函數真的是一樣的,我添加了一個按鈕點擊調用的線程...就是這樣 – andrea 2012-01-18 08:54:28
如何將'n'指示出線程並顯示它,或者在調試器中斷處停止線程並檢查它計算之後呢?值應該是相同的,正如@Tudor所暗示的那樣 - 這是同一個核心類型做同樣的工作。在1000-3000處理器中,你會很不幸地發現foo()被任何事情打斷,我相信你已經做了不止一次的測試。一旦由任何線程啓動,很有可能foo()會運行直到返回和第二個clock_t調用。 – 2012-01-18 09:52:06
以及我發現在opencv庫中定義的函數在窗體中比在控制檯中多4倍。我只是重寫了功能,性能幾乎相同。 – andrea 2012-01-18 11:48:28
- 1. 並行線程與實時優先級
- 2. 線程優先級
- 3. 流程優先與線程優先級
- 4. 線程消息之間的優先級?
- 5. 執行捕捉優先級
- 6. 更改線程優先級
- 7. Android的線程優先級
- 8. NSOperationQueue VS並行線程的優先級
- 9. 線程,優先級和放棄
- 10. Windows和Linux線程優先級等價
- 11. 線程內線程的優先級
- 12. 如何確定terraform執行優先級的優先級
- 13. 通過了解線程的優先級來設置線程的優先級
- 14. JQuery和Facebook API函數優先級/優先
- 15. C++函數中非常奇怪的優先級/優先級
- 16. 線程運行後快速更改線程qualityOfService /優先級
- 17. 聚合線程和線程優先級(java)
- 18. CSS和Javascript - 執行優先
- 19. Firefox擴展執行優先級
- 20. JavaScript執行的優先級是什麼?
- 21. 是nice()用來改變線程優先級還是進程優先級?
- 22. 更改線程優先級ERROR_INVALID_HANDLE
- 23. C++線程網絡優先級
- 24. .NET Backgroundworker對象的線程優先級
- 25. 設置CoreData NSManagedObjectContext線程優先級
- 26. 降低Task.Factory.StartNew線程的優先級
- 27. Java中的高優先級線程
- 28. 獲得pid的優先級和正常運行時間? (iOS)
- 29. 駱駝路線執行優先
- 30. Mysql WHERE語句執行期間的優先級
不要「想」。測量。 – 2012-01-18 08:11:27
以及我使用c_clock來衡量計算函數的時間,不知道如何衡量線程處理表單花費的時間,因爲我不知道如何訪問該線程,這就是爲什麼我「想」 – andrea 2012-01-18 08:21:12
我的意思是使用分析器。使用'clock'測量將是非常不精確的,因爲.NET會在背後做很多事情,這會破壞這些簡單的措施。 – 2012-01-18 09:27:53