以手機操作系統為例,我們經常說系統或者某個軟體優化好不好,到底什麼是優化?

經常看到iOS或者某個安卓系統版本(或者是某個app)更新之後提到說進行了系統優化,比前一個版本速度更快,那麼到底優化指的是什麼?通過什麼技術手段實現?


對於系統或者軟體而言,優化通常包括邏輯上的簡化性能的提升,目的是讓系統更快完成一件任務。

  • 邏輯上的簡化通常就是增設一些默認值或者排除干擾,讓用戶只需要記住少量常用的設置或邏輯。例如,按「功能鍵」再選擇「退出」然後「確定」,簡化為按兩次返回鍵。

  • 下面主要講一下性能的優化。系統或軟體,都是由程序組成。程序的主要部分是數據結構和演算法。優化系統或軟體,主要從優化數據結構演算法入手。做這些優化,讓用戶感覺到的就是運行程序「快」、「順暢」。

(1)優化數據結構,可以降低內存的使用,或者提高緩存命中率。因為內存(手機上的RAM)比磁碟(手機上的ROM)的讀寫速度快非常多,但容量較小,所以內存需要「省著用」和「好好用」。

(2)對演算法而言,通常的優化指的無非就是降低時間複雜度和空間複雜度兩個方面,通俗點說就是效率(計算時間)和內存使用。例如,演算法時間複雜度為O(n)的比O(n^2)就快非常多,空間複雜度為O(n)比O(n^2)的少佔用很多內存。

當然更廣義地講,優化還包括「適用性的擴大」,「效果的增強」。比如相機的App,如果優化得好,則可以應對更多不同光照情況下的場景,成像質量會更好。因為衡量一個演算法的好壞,除了效率,還包括質量(質量在不同演算法包含不同的含義)。


優化包括很多方面

1.界面優化,這是最直觀的,比如界面操作,比如界面排列,展示,根據用戶反饋來持續優化,基本上也是每次版本都會有的

2.性能優化,性能優化有你能感受到的,也有感受不到的。比如簡化邏輯,降低耗電,提高處理速度等等

3.介面優化,與後台之間的介面也是存在不斷優化的

4.功能優化,有些功能沒人用,可以砍掉。有些功能在強烈要求後增加

5.適配優化,這個主要是在Android設備上的,一般來說要準備四套圖:xhdpi,hdpi,ldpi,mdpi,還有nodpi,這是目前我遇到的項目準備的,對於其他的具體設備做過適配的,還有其他的。只有更好的適配才會有更好的使用體驗

6.其他


一般說更新說明裡有這話的app有以下幾種情況:

1 修bug,美其名曰or換個說法

2 簡化了流程,減少了操作步驟。

3 自身技術的改進,針對同樣的設計和交互優化了代碼。如列表向下滑動到100頁(1000條數據)也不會卡頓。

4 為了發版本而發。但是,新版本神碼新功能也木有或太少,所以加這麼一句。發版本的目的是為了讓用戶知道app的開發商「一直在努力」,保持用戶對其的關注度。

所以,不必太在意這些。關鍵看你自己爽不爽。


優化就是發現問題解決問題~~~~

來源於各種渠道的反饋。比如客戶覺得這個地方我不爽啦,比如內部寫了個更牛叉的演算法了,比如boss說 我們要升級啦。總的來說就是把以前的東西弄的相對來說更好一點。


優化是一個很含糊的定義。

一、演算法上的優化:之前版本的為了儘早推出,更多的是一種「能用就好「的版本。開發者又不能跟你扯這個演算法是阿姆斯特朗回旋加速噴氣式阿姆斯特朗演算法……

二、適應新系統:例如iOS7出來了,當然出個新版本跟上潮流啦。

三、邏輯或者缺陷(BUG)的修復:有些看得見的修復就可能跟你明說,有些看不見的修復也無法跟你解析,也叫作「優化」吧。

你問我怎麼知道的?呵呵因為我也是這樣做的。


假設兩座城市之間新修了一條公路(硬體上雙核變成四核之類什麼的),必須重新規劃一下交通,告訴人們新修了公路,不然這條公路就得不到充分利用,這就是對於硬體進行系統(或軟體)優化。沒有什麼特殊的技術手段,修改增刪代碼吧


做為一個曾經搞過手機系統優化的人來說,大部分手機軟體這塊的優化是很籠統的,一般只是改變了代碼實現的邏輯或者結構,當然這是代碼不良的情況。如果代碼已經很不錯了,想達到一定優化是很難的,正如提高做功效率一樣的。


從來不用系統類的優化軟體,理由很簡單:憑什麼優化軟體的幾個開發員會強於操作系統的N多開發人員;如果僅僅是更改參數即可實現的優化,還不如用系統原生的途徑自己設定;優化軟體本身就增加了整個電腦或手機軟體環境的複雜性和不穩定性,還是乾乾淨淨的好。


就和量體裁衣差不多把


說那麼多 小白根本不明白 更別說好些答案都錯了

優化就是提高資源的利用率

就這麼簡單

資源是什麼?存儲器的容量,計算時間,屏幕空間,等等

夠通俗易懂吧


推薦閱讀:

金山手機毒霸屏蔽 App 內廣告的做法和 AdBlock 等服務的做法有何不同?是否應該譴責?
Nvidia Maxwell用ARM替換掉command processor有什麼意義?
知乎上有哪些 Android 開發的大牛?

TAG:iOS | 軟體 | Android開發 | Android |