我有一種讀取實時傳感器數據的服務。數據按順序讀取,每種間隔50毫秒有4種不同的類型。實際上,傳感器數據通過藍牙傳輸,但是通過服務從輸入流讀出。有關實時數據傳輸性能的服務和流程
現在至關重要的是數據在其到達時以最精確的可能性加蓋時間戳,那就是我對gc有問題的地方。如果gc在閱讀數據和加蓋時間戳之間踢球,即使是20 ms也會導致難看的結果。同樣重要的是,數據永遠不會有更大的差距,因爲我已經有了相同的數據類型之間的200毫秒。
另一方面,我希望數據能夠實時傳輸到應用程序(迷你延遲是好的)。 我設法編寫服務,以便它在開始時分配所有對象,並永遠不會爲GC生成任何垃圾。但是對於IPC,我需要創建parcelable對象來將它們發送給應用程序。
問題1:如果我創建這樣的對象,並通過IPC發送給應用程序,他們存在誰的內存?由於2個進程不共享內存。
問題2:使用IPC會降低性能嗎?因爲我可以簡單地讓服務在同一個進程中運行,並且更容易共享數據10次。
該應用程序將具有GC,因此如果該服務在相同的過程中運行,則存在GC中斷實時數據處理的危險。但是,如果我把它們分成兩個進程,恐怕IPC會讓我的性能超過GC麻煩。
該服務僅適用於一個單一的應用程序,但應儘可能不間斷地運行,並儘可能實時地提供其數據。所以把它放在自己的過程中呢?
也許我一直有點激烈,但我真的很想進入系統輸出在GUI上的延遲是最小的。我必須堅持使用android作爲整個應用程序已經存在,即時重寫一個數據源,我想盡可能快和完美。但將其與應用程序放在同一個過程中應該是朝着這一目標邁出的重要一步。 – NikkyD 2011-12-30 23:11:08