成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android性能優化之運算篇

移動開發 Android
Google近期在Udacity上發布了Android性能優化的在線課程,分別從渲染,運算與內存,電量幾個方面介紹了如何去優化性能,這些課程是Google之前在Youtube上發布的Android性能優化典范專題課程的細化與補充。

Google近期在Udacity上發布了Android性能優化的在線課程,分別從渲染,運算與內存,電量幾個方面介紹了如何去優化性能,這些課程是Google之前在Youtube上發布的Android性能優化典范專題課程的細化與補充。

下面是運算篇章的學習筆記,部分內容與前面的性能優化典范有重合,歡迎大家一起學習交流!
1)Intro to Compute and Memory Problems

Android中的Java代碼會需要經過編譯優化再執行的過程。代碼的不同寫法會影響到Java編譯器的優化效率。例如for循環的不同寫法就會對編譯器優化這段代碼產生不同的效率,當程序中包含大量這種可優化的代碼的時候,運算性能就會出現問題。想要知道如何優化代碼的運算性能就需要知道代碼在硬件層的執行差異。
2)Slow Function Performance

如果你寫了一段代碼,它的執行效率比想象中的要差很多。我們需要知道有哪些因素有可能影響到這段代碼的執行效率。例如:比較兩個float數值大小的執行時間是int數值的4倍左右。這是因為CPU的運算架構導致的,如下圖所示:

雖然現代的CPU架構得到了很大的提升,也許并不存在上面所示的那么大的差異,但是這個例子說明了代碼寫法上的差異會對運算性能產生很大的影響。

通常來說有兩類運行效率差的情況:第1種是相對執行時間長的方法,我們可以很輕松的找到這些方法并做一定的優化。第2種是執行時間短,但是執行頻次很高的方法,因為執行次數多,累積效應下就會對性能產生很大的影響。

修復這些細節效率問題,需要使用Android SDK提供的工具,進行仔細的測量,然后再進行微調修復。
3)Traceview Walkthrough

通過Android Studio打開里面的Android Device Monitor,切換到DDMS窗口,點擊左邊欄上面想要跟蹤的進程,再點擊上面的Start Method Tracing的按鈕,如下圖所示:

啟動跟蹤之后,再操控app,做一些你想要跟蹤的事件,例如滑動listview,點擊某些視圖進入另外一個頁面等等。操作完之后,回到Android Device Monitor,再次點擊Method Tracing的按鈕停止跟蹤。此時工具會為剛才的操作生成TraceView的詳細視圖。

關于TraceView中詳細數據如何查看,這里不展開了,有很多文章介紹過。
4)Batching and Caching

為了提升運算性能,這里介紹2個非常重要的技術,Batching與Caching。

Batching是在真正執行運算操作之前對數據進行批量預處理,例如你需要有這樣一個方法,它的作用是查找某個值是否存在與于一堆數據中。假設一個前提,我們會先對數據做排序,然后使用二分查找法來判斷值是否存在。我們先看***種情況,下圖中存在著多次重復的排序操作。

在上面的那種寫法下,如果數據的量級并不大的話,應該還可以接受,可是如果數據集非常大,就會有嚴重的效率問題。那么我們看下改進的寫法,把排序的操作打包綁定只執行一次:

上面就是Batching的一種示例:把重復的操作拎出來,打包只執行一次。

Caching的理念很容易理解,在很多方面都有體現,下面舉一個for循環的例子:

 

上面這2種基礎技巧非常實用,積極恰當的使用能夠顯著提升運算性能。
5)Blocking the UI Thread

提升代碼的運算效率是改善性能的一方面,讓代碼執行在哪個線程也同樣很重要。我們都知道Android的Main Thread也是UI Thread,它需要承擔用戶的觸摸事件的反饋,界面視圖的渲染等操作。這就意味著,我們不能在Main Thread里面做任何非輕量級的操作,類似I/O操作會花費大量時間,這很有可能會導致界面渲染發生丟幀的現象,甚至有可能導致ANR。防止這些問題的解決辦法就是把那些可能有性能問題的代碼移到非UI線程進行操作。
6)Container Performance

另外一個我們需要注意的運算性能問題是基礎算法的合理選擇,例如冒泡排序與快速排序的性能差異:

避免我們重復造輪子,Java提供了很多現成的容器,例如Vector,ArrayList,LinkedList,HashMap等等,在Android里面還有新增加的SparseArray等,我們需要了解這些基礎容器的性能差異以及適用場景。這樣才能夠選擇合適的容器,達到***的性能。

 

責任編輯:chenqingxiang 來源: 胡凱的博客
相關推薦

2015-09-16 15:48:55

Android性能優化電量

2015-09-16 13:54:30

Android性能優化渲染

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2015-09-16 15:21:23

Android性能優化內存

2013-02-20 14:32:37

Android開發性能

2019-12-13 10:25:08

Android性能優化啟動優化

2009-08-13 15:49:18

ASP.NET性能優化

2009-08-13 16:22:18

ASP.NET性能優化

2020-06-11 13:03:04

性能優化緩存

2013-09-17 10:32:08

Android性能優化數據庫

2017-01-15 15:13:37

Android性能優化優化點

2017-12-23 14:38:41

Android編程開發優化

2019-09-25 08:03:21

Android加速Google

2021-07-05 14:55:28

前端優化圖片

2019-03-15 15:00:49

Webpack構建速度前端

2024-02-20 19:53:57

網絡通信協議

2022-02-16 14:10:51

服務器性能優化Linux

2021-11-29 11:13:45

服務器網絡性能

2021-08-02 10:50:57

性能微服務數據

2012-06-20 13:54:44

架構性能優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 性做久久久久久免费观看欧美 | 女同久久另类99精品国产 | 亚洲福利av| 涩涩视频在线看 | a级在线免费视频 | 欧美综合久久久 | 99热在线观看精品 | aaa级片 | 欧美日韩一区二区在线观看 | 欧美男人天堂 | www.久久久.com | 国产日韩亚洲欧美 | 激情网五月天 | 欧美精品一区二区蜜桃 | 亚洲成年人免费网站 | 日韩精品免费 | 精品久久久精品 | 亚洲+变态+欧美+另类+精品 | 亚洲一区在线播放 | 羞羞视频在线观看网站 | 免费黄色录像视频 | 成人免费一级 | 一区二区三区国产精品 | 久久99国产精品 | 欧美日韩国产精品一区 | 久草视频网站 | 日本一二三区高清 | 精品视频一区在线 | 亚洲欧美综合精品另类天天更新 | 一区二区三区四区国产精品 | 麻豆视频国产在线观看 | 激情综合五月 | 毛片久久久 | 亚洲黄色高清视频 | 欧美日韩国产精品一区 | 欧美精品久久久 | 国产精品久久久久久妇女 | 日韩三片 | 亚洲精品一区二区 | 日韩欧美在线免费 | 超碰在线播|