簡體   English   中英

NSCore,NSOperation或GCD是否用於CoreMotion和准確的計時目的?

[英]NSThread, NSOperation or GCD for CoreMotion and accurate timing purposes?

我希望在iPhone 4+上進行一些高精度的核心運動讀取(如果可能,>> = 100Hz)和運動分析,這些運動將在應用程序的主要部分持續運行。 至關重要的是,運動響應和分析代碼發出的信號應盡可能避免滯后。

我最初的計划是根據節拍器項目中的代碼啟動一個專用的NSThread,如下所示: iOS中的准確計時 ,以及用於運動分析器鏈接和使用線程的協議。 我想知道GCD或NSOperation隊列是否會更好?

在大量閱讀之后,我的印象是,它們被設計為處理大量離散的一次性操作,而不是定期執行一次又一次的少量操作,每毫秒左右使用它們可能會無意中產生很多創建/銷毀線程的開銷。 有人在這里有經驗嗎?

我還想知道線程中無休止的while循環對性能的影響(例如上述鏈接中的代碼)。 有人知道線程在幕后如何工作嗎? 我知道iPhone4(及更低版本)是單核處理器,並使用某種智能多任務處理(搶先式嗎?),它會根據各種時序和I / O需求切換線程,以產生並行效果。

如果您的線程有一個簡單的“ while”循環無休止地運行,但每毫秒才執行任何其他工作,那么處理器的切換算法是否認為該無休止的循環是對資源的“高需求”,因此將其從其他線程中拖累了或是否足夠聰明,可以在額外的代碼執行之間的“停機時間”內向其他線程分配更多資源?

預先感謝您的幫助和專業知識...

IMO的瓶頸在於傳感器。 實際更新頻率通常不等於您指定的頻率。 請參閱為deviceMotionUpdateInterval設置的更新頻率,它是實際頻率? 設備運動的實際頻率更新低於預期,但隨着設置的增加而增加

不久前,我還使用Core Motion和原始傳感器數據進行了一些測量。 我也需要很高的更新率,因為我正在進行Simpson集成,因此可以最大程度地減少錯誤。 事實證明,實際頻率始終較低,並且極限約為80 Hz。 那是一台運行iOS 4的iPhone4。但是,只要出於科學目的您不需要它,在大多數情況下60-70 Hz仍然可以滿足您的需求。

暫無
暫無

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

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