簡體   English   中英

上下文切換是否耗費了大量時間?

[英]Is context switching using up significant time?

我一直遇到app(使用java和C ++以及OpenCV)的問題,這似乎與執行各種任務所花費的時間非常不一致。 為了幫助診斷這個,我在java中創建了一個函數(稱為one_off_speed_test() ), one_off_speed_test()在循環中執行一系列整數數學問題,大約需要半秒鍾,然后打印到日志所需的時間。 如果我在onCreate()內重復調用此函數,則每次調用所用的時間非常一致(+ = 3%),但是如果我從onCameraFrame()調用它,則OpenCV在准備好圖像時調用的函數從相機開始,每個fram中的數學測試所需的時間會因任何因素而異。 我決定在eclipse / DDMS中嘗試執行采樣器,看看我是否可以解決發生的事情。 我看到當我點擊one_off_speed_test() ,它列出了該函數的父項和子項,以及一行“ (上下文切換) ”。 然后在該行上,在標有“ Incl Real Time ”的列下,它顯示“66%”。 現在我對使用DDMS並不是很專業,而且我對上下文切換只有一個朦朧的想法,但是到目前為止的描述中,看起來我的上下文切換問題需要花費很多時間嗎? 或者我誤解了DDMS輸出。

在此輸入圖像描述

Context switch描述執行其他線程所花費的時間。 因此,當從onCameraFrame()調用您的函數時,它與其他線程共享CPU,而不一定是屬於您的應用程序的線程。

另請參見回答https://stackoverflow.com/a/10969757/192373https://stackoverflow.com/a/17902682/192373

在發布的示例中, onCameraFrame()在掛鍾上花費了14.413665秒,其中4.811454秒被one_off_speed_test() (大概是10幀),並且等待其他線程花費了9.596984秒。 這是有道理的,因為onCameraFrame()回調與相機服務競爭CPU資源,相機服務在單獨的系統進程中運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM