我有一個opencv庫的C++程序,它將圖像作爲輸入並執行姿態估計,顏色檢測,phog。當我從命令行運行該程序時,大約需要4-5秒才能完成。它需要大約60%的CPU。當我嘗試在兩個不同的命令行窗口中同時運行相同的程序時,該過程需要大約10-15秒才能完成,並且兩個過程幾乎在同一時間完成。 CPU使用率達到100%。同時運行多個進程
我有一個網站,使用exec()命令調用此c + + exe文件。所以當兩個用戶嘗試上傳圖片並運行時,需要更多時間,正如我在上面在命令行中所解釋的那樣。這是因爲C++程序涉及高計算,CPU達到100%會降低速度?但我讀到CPU達到100%並不是壞事,因爲計算機正在使用其全部容量來運行該程序。那是因爲我的C++程序,還是與我的服務器(計算機)設置有關?這可能不是Apache服務器問題,因爲當我嘗試從命令行運行它時,它也會變慢。我使用的是四核處理器,當我嘗試同時運行相同的進程時,所有4個CPU達到100%,所以我認爲它分佈在所有處理器中。所以我有幾個問題:
1)這可以通過在我的c + +代碼中使用多線程來解決嗎?至於現在我沒有使用它,但多線程使c + +代碼更加計算成本昂貴,並增加CPU使用率這就是問題)。
2)什麼可能是它減慢的原因?進程是否在隊列中,每個進程只運行一定的時間,並在兩個進程之間切換? 3)如果這是因爲它涉及高計算,它會幫助,如果我改變一些函數opencv gpu函數?
4)有沒有辦法解決這個問題的任何想法或提示?
運行時,一個進程,並在同一時間運行在同一進程兩次我已經插入頂部的結果:
版本5的過程中,運行它 兩個版本5次發生在同一時間運行
的CPU信息:
在此先感謝。
沒有實際(優化代碼本身之後當然)你是否接受,CPU使用率過高或更長的執行時間看到你的代碼,很難確切地說代碼在做什麼......但似乎有點懷疑。 –
這也將有助於理解你的CPU是什麼。例如,英特爾超線程處理器的行爲與具有「四個真實內核」的處理器的行爲不同。 –
我已經添加了我的CPU細節。 – user1583647