2010-01-27 40 views
2

我剛剛在PSP上進行性能測試非常簡單。你剛剛關閉'vsync'並打印出框架,然後改變一些內容並查看幀速率是上升還是下降...在iPhone上獲得幀率性能

有什麼辦法可以在iPhone上做同樣的事情嗎?你如何關閉vsync?儀器工具旁邊沒用。它的主要問題是運行它會對應用程序的性能產生不利影響!此外,它報告的幀率非常零星。

我不希望任何花哨的工具報告調用樹和每個函數花費的時間。我只是想要一個無限制的幀速率和一些方法來看看它是什麼。您可以在iPhone上使用高精度計數器嗎?在Windows中像QueryPerformanceCounter?

另外,無論如何你有某種程度上KILL後臺進程,所以你知道他們不能影響性能,也許解決虛擬幀率問題?

回答

0

您正在採取嘗試性措施的方法。非常間接。很容易確切地說出正在花費的時間;它不依賴於正在發生的事情,也不需要學習新的工具。 All you need is a debugger that you can interrupt.

+0

所以的想法是。只是保持暫停和恢復調試器,它最多暫停的功能是你應該首先優化的那個,不是因爲它調用了很多,還是因爲它需要時間?理論上聽起來不錯。但問題是,線程和東西等。例如,當你暫停時,調試器可能不得不等待,直到代碼等待。比如我在iPhone上的應用程序嘗試了這個功能,並且每次都在同一時間點打破。完全在系統代碼中(沒有我的功能)。你有沒有在iphone上試過這個?你能列出一些平臺/調試器在哪裏工作? – matt 2010-03-31 02:05:53

+0

@matt:兩件事。 1)查看調用堆棧,因爲堆棧中的所有代碼行都共同負責它處於它所處的狀態。如果它們中的任何一個可以更少或根本不做,則會節省時間。 2)線程A可能正在等待線程B,所以最好能夠對進程中的所有線程進行快照。這應該照亮你的問題,除非真的沒有什麼可以優化的。試一試,祝你好運。 – 2010-03-31 11:18:47

0

你不能殺死iPhone上的後臺進程。這可能導致錯誤或惡意應用程序干擾電話功能,並且iPhone上所有其他功能的需求都從屬於電話。

+1

不是一個有效的原因。無論如何,當內存不足時,後臺進程會首先被殺死。而殺死Phone.app也不會干擾電話功能。 – kennytm 2010-03-09 16:03:32

0

嘗試使用QuartzDebug或OpenGL Profiler。

1

用儀器配置您的應用程序並使用Core Animation工具。它給出了幀率。

+0

核心動畫工具沒有給我一個幀率(即時通訊不做很多動畫)。 OpenGL ES分析並不適用於桌面視圖,地圖等 – 2012-09-09 12:39:07

0

使用儀器獲取幀速率。

爲此,請在您的應用程序上運行配置文件(單擊並按住xcode中的運行按鈕並選擇配置文件)。確保你在設備上運行你的應用程序。選擇openGL ES分析。查看每秒核心動畫幀下的數據顯示。

你想瞄準60fps。