2013-07-01 36 views
1

我正在嘗試開發用於測量應用程序性能的Android平臺API。例如,我需要以下的東西來衡量一個Android應用程序。我需要專家建議Android應用程序的性能

  1. 應用程序登錄需要多少時間?通過後端系統登錄。用戶名和密碼保存在數據庫服務器中,android應用程序將從數據庫服務器中檢查用戶名和密碼。應用需要多長時間才能檢查?一個常見的解決方案是:用戶名/密碼檢查功能的開始時間和結束時間,然後(結束時間 - 開始時間)將給出應用程序需要登錄檢查的實際時間。專家的任何其他建議?

  2. 計算所有這些UI組件(TextView,ImageView等)成功加載所需的渲染時間。 ImageView圖像將從服務器加載。還需要專家的建議。我可以在這裏申請#1蜱,但想從專家聽取:)

感謝 Arefin

回答

2

如果您擔心本地CPU使用率,請不要使用掛鐘時間(即牆上的時鐘顯示的時間)。 Android包括一個Debug類的靜態方法,threadCpuTimeNanos()這將是更適合於該目的:

long startTime = Debug.threadCpuTimeNanos(); 
    // your computation goes here 
long endTime = Debug.threadCpuTimeNanos(); 

// If this comes out as 0, you probably don't need to worry about performance :-) 
long cpuTimeInMilliseconds = (endTime - startTime)/1000000; 
+0

謝謝@丹Breslau,你的想法是真棒! – arefin

+0

我需要一個更多信息,如果您知道,請讓我通知。在通過adb命令在我的設備上安裝apk之後,我想自動運行該應用程序。沒有用戶交互,應用程序將運行並從一個屏幕導航到另一個屏幕。但應達到所有屏幕。你有什麼想法?提前致謝。 – arefin

+0

如果我理解你是對的...我會這樣做的方式是創建第二個應用程序,該應用程序僅供您(或其他人測試您的應用程序)使用,其中包含意圖列表,您的「真實」應用手柄。此測試應用程序會定期從列表中觸發其中一個Intents,直到它到達列表的末尾,此時它將退出。我沒有時間提供更多細節;如果你需要進一步探索,我會建議發佈一個新問題。 –

0

我覺得(結束時間 - 開始時間)是一個很好的解決方案。沒有一點讓它更加複雜......

+0

是,DORS,你是對的!謝謝。 – arefin

2

要衡量你的應用程序的性能,這是一個公平的選擇,使用簡單的Stopwatch種實用程序。或者你也可以使用Android的traceview這樣的標準工具。

但是,如果您想了解您的應用在用戶中的表現如何,那麼像New Relic這樣的解決方案可以非常方便。它可以讓你衡量你的應用程序的各種HTTP請求的性能。

最後,爲了跟蹤您的應用在呈現對象時的表現,最好使用Android自己的Hierarchy Viewer

+0

謝謝@ anirvan.Hierachy Viewer是一個工具,我可以在我的代碼/ API中使用嗎?我想,我不能這樣做。 – arefin

+0

沒有。即使有可能(假設你找到它的來源),我認爲複雜性並不值得。我通常堅持這個I/O講座中提出的指導原則 - http://youtu.be/N6YdwzAvwOA - 並使用HierarchyViewer進行測量。但我會環顧四周,以程序化的方式分享任何可能會允許的內容。 – anirvan

0

你能來看看:https://firebase.google.com/docs/perf-mon/get-started-android

您可以使用自定義跟蹤來衡量代碼段的性能(通過在代碼中添加Trace.start(),Trace.stop())或使用@AddTrace註釋來跟蹤特定的方法。

一旦啓用,火力地堡性能自動測量應用程序啓動時間和網絡請求延遲,請求/響應大小等