[經驗] 開發時應該考慮的大量資料問題

前陣子接手的一個 android 程式
它出現幾個我無法接受的問題

  1. 資料量大時 Crash
  2. 捲動速度慢


在程式的開發初期,因為時程趕,一切以功能優先
在這種情況下,忽略了幾個問題:

  1. 效率:因為初期沒有實體機器,都是用模擬器開發,勿以為在實機上就一定會夠快
  2. 記憶體:有些老師可能會跟人員說,Java 不用像 C 一樣管理記憶體,它會管理的很好,但是它還是不能讓開發人員亂寫的,在這裡,記憶體使用的問題也是被忽略了
  3. 大量資料:在開發功能階段,往往都只用個位數的資料在操作,但是如果沒考慮到資料量大的情況,到時就很難處理了
  4. 合理的行為:制定規格的人本身沒有足夠的使用 android 經驗,天馬行空的設計自己想要的 UI 行為,造成許多開發上的困難,甚至做出一些對架構不利的改動
在此只針對大量資料帶來的效能及記憶體問題,提出解決的「想法」
想法實際上比做法更為重要,我強調在處理這些問題時,應該有清楚的想法,
而不是只是抄別人的做法

方向:

  1. 對於重覆的資源,做有效的管理,避免浪費過多的重覆成本在處理這些物件上,例如使用 static 物件,或是放在一個存活時間較長的物件上
  2. 找出花費成本最高的運算,如讀檔、網路、資料庫操作
  3. 使用一些延遲動作的技巧,來讓使用者感覺反應時間加快,如有互動的提示行為,在載入大量資料時顯示進度,雖然時間可能變長,但卻會讓使用者誤以為等的時間比較短
  4. 有需要的話,降低物件的階層數,很多層的物件,由其是 UI 元件,太多層級,可能造成較大的負擔

留言

這個網誌中的熱門文章

[Linux] 如何 hex 字串 與 文字互轉

記下 openssh 中 sftp的log

[linux]用指令來做音量控制