1. 程式人生 > >Android效能優化之路(五年之癢)

Android效能優化之路(五年之癢)

記得在上學的時候,就聽說在某個方面堅持學習一年,也就入門了。很慶幸,工作五年了,一直都在做Android效能優化。一般來說,工作三年左右會是工作的一個門檻,五年左右會是另外一個門檻,所以最近非常的低落、迷茫。昨晚外面下著漂泊大雨,輾轉反側的我,在想自己這從業五年以來的經歷。

剛畢業的人,會覺得很多東西都很新鮮,那個時候主要是以學習為主,尤其是系統性能,初步瞭解每個模組,大概也需要一年左右的時間,一年左右以後,雖然學了很多,但覺得自己什麼也不會,而與你同期做應用的人,你會發現他們可以負責一個模組了,非常自卑。假設此時你換工作的話,會發現自己跟畢業沒有多大的區別,因為此時你學的知識還不知道怎麼發揮價值,學到的工具也沒什麼用。這也是後兩年左右需要做的事情。第二年到第三年,你開始接觸一些簡單的效能問題,雖然處理起來不這麼得心應手,但慢慢你還是能夠解決,等過了一段時間,在你原來打的一年左右的基礎之上,在解決問題的過程中,你慢慢體會學習的知識,不斷反覆,到後來發現複雜一點的Android效能問題,你也可以解決了。隨著你解決問題的增多,App、Framework、Hal、Kernel等等所以Android層面的問題都解決了一遍,然後你覺得所有的Android系統性能問題都可以Fix掉,而此時的你,在重複的解決這些問題時,卻覺得工作由原來的興奮,變得無趣,此時你的內心卻是無比膨脹的,覺得自己在Android系統性能上無所不能了,大概也到你工作三年左右需要繼續跟公司簽訂合同了,而你卻放棄了,你覺得自己應該去尋找更廣闊的世界,所以你跳槽了,這也進入到後兩年的工作了。

你跳槽了,你來到了新公司,覺得會有更大的發展,結果你會發現,其實公司還是會讓你處理Android系統性能優化相關的問題,利用你以往的經驗。你突然發現換了一個環境,還是不能解決困境,這樣持續一年左右,對Android系統性能優化,你非常純熟,也無所畏懼,但你覺得自己不應該這樣,雖然困惑但未曾離開,於是你開始開發形成一些工具,對知識進行沉澱,你看到了工具所帶來的價值,發現了無數的問題,比起自己一個一個的去復現、分析、解決問題高效了很多,而且還能在功能沒有上線時,告訴別人存在部分效能問題,此時你應該是另外一種感覺了,這個時候你應該工作到第五年了,也就是此時的我。

此時的我,對效能的認識不在這麼簡單了,無論是Android效能問題的解決,各種Android效能工具使用及開發,都有過了解,而發現五年真正做的確實在不停的Profile並進行分析解決,無法觸及到更深的層次,也就是覺得自己在這個行業入門了。入門了,也就差不多了,但或許正如別人所說,我有著湖南人的固執,我卻並不滿足,最近一直在學習反思,方式自己的路。

自己所做的事情,還是太重了,OverLoad太大,而真正的效能監控OverLoad正常應該控制在1%左右,最大不會超過3%,很好的一個例子是Dtrace及Google的監控系統,在儘可能收集到最多資料的同時,把OverLoad控制到最小,那個時候,是知識及智慧的體現,需要高效能的框架及對領域知識的深入理解,然後建立一套監控評價效能的標準,此時會有客戶端的資料收集、上傳,服務端的儲存、處理、展示,需要各種扯皮,說服別人資料的可信及標準的正確,需要不斷的嘗試及校正,耗費大量的時間就經歷,為前人所不能為,在國內應該很少這樣的地方了,也就導致了我現在做技術的迷茫,因為國內的技術,大多數時候還停留在能用的階段,還沒到達精緻精細要求,還無工匠追求,希望數十年後也許會有這樣的要求!

總的來說,在這五年做Android效能優化的路上,經歷了:

  1. Android效能優化問題處理。知識的認識。
  2. Android工具開發及初步瞭解標準。知識沉澱的初步嘗試。
  3. Android效能標準建立。深入理解知識及沉澱。

本人愚鈍,大致花了五年左右的時間進行了前面兩階段的摸索。在進行第三階段的探索時,遇到了各種各樣的問題,無論是技術的還是非技術的,感覺遍體鱗傷。

基於個人經歷的總結,歡迎交流。如何你真的理解Android效能,歡迎聯絡我。

生命不息,奮鬥不已。