在iPhone OS設備中,同時運行NSTimers的人數是多少?我有一堆被一個定時器每秒發射25次的例程調用,事情非常波動,緩慢和沉重。我正在考慮添加一個或多個額外的NSTimers來分配工作量,但我擔心有多少人可以使用。這可能有點取決於我意識到的每個計時器的發射速率,所以假設每秒發射速率爲20〜30次。那麼,有多少NSTimers太多了?有多少NSTimers太多?
5
A
回答
5
在內部,NSTimers
都在單個硬件計時器上實現。操作系統爲所有正在運行的應用程序保留一個定時器的中央列表,併爲最快的事件安排一個硬件定時器。
添加計時器不會改變您的應用程序的行爲。也就是說,以同樣的方式將線程添加到基本上單一的進程應用程序中,可以使運行時管理變得更加簡單,添加計時器可以幫助您劃分問題。
鑑於你引用的時間,我猜這個計時器是一個遊戲或類似的frameupdate同步。我會建議幾件事情:
將您當前的繪圖代碼拆分爲一個單獨的線程並運行您的(相同的)定時器代碼。這應該給你更多的控制。
對您的代碼進行剖析,以查看在每個1/25s插槽中執行了多少處理 - 它可能(也可能是)您只需優化代碼。
1
1在你的情況。添加額外的計時器不會讓您的應用程序運行得更快。
你必須提高你的代碼效率或減少定時器的啓動次數。
我不知道一個定時器的開銷,但它可能是相當高的火災率。定時器不是爲此製作的,我建議一個線程作爲替代。
2
聽起來像定時器的數量不是問題。與你在「一堆例程」中進行的加載相比,NSTimers的開銷基本上是無關緊要的。現在不要擔心。根據需要使用盡可能多的計時器。之後,打開鯊魚/樂器,看看你最花時間在哪些方法上。
相關問題
- 1. 有多少層太多?
- 2. 有多少個EJB太多?
- 3. 有多少查詢太多?
- 4. STL有多少太多?
- 5. 有多少任務太多?
- 6. JSON有多少JSON太多?
- 7. 多少javascript太多
- 8. 多少是太多?
- 9. JVM中有多少個對象太多?
- 10. WCF-有多少種方法太多?
- 11. SQL SSIS有多少步驟太多
- 12. 有多少NGinx重定向太多?
- 13. memcached中有多少個鍵太多?
- 14. 有多少記錄/對象太多?
- 15. ReactJS中有多少組件太多?
- 16. MVC中有多少GUI邏輯太多?
- 17. 有多少頂點緩衝區太多?
- 18. 有多少PHP包含太多?
- 19. 有多少Ruby線程太多?
- 20. SQL Server 2005表有多少列太多?
- 21. mysql-query中有多少where-clause太多?
- 22. 有多少班級太多? Rails STI
- 23. 有多少構造函數太多?
- 24. 表中有多少個「太多」字段?
- 25. 有多少列是太多列?
- 26. 有多少個nginx緩衝區太多?
- 27. 有多少sql查詢太多?
- 28. 多少Javascript太多了?
- 29. (Java)重載:多少太多?
- 30. 多少CSS太多CSS?