在我學生時期,就對程式設計有著濃厚的興趣,當時只要能寫出想要的程式功能時就會雀躍不已~根本還不知優化程式的重要性,隨著時間的推移出了社會經過職場洗禮累積經驗後,漸漸才領會出程式設計的精妙之處,缺乏程式技巧只能算是土法煉鋼、拼湊積木做玩具而上不了臺面,若要設計出商品等級的程式就得在穩定與高效方面琢磨一番了!
為什麼有些人寫出的程式執行起來順暢無比?為什麼有些人寫出來的程式執行起來拖泥帶水、卡頓甚至當住不動?其關鍵在於效能細節上的掌握,以下提供一個程式執行效能的例子來做分析,列出學生成績最高分者:
- 註1:未將重複的部份「成績表.maxBy(學生成績::總分).總分」給抽離出迴圈或 Iterative 外,很帥的以一行就敘述就完成的程式碼,看似沒問題也能得到正確結果,但重複的部分就算 Iterative 一億次所得的結果也會是一樣的,問題是此寫法會嚴重影響執行效能,因為引發了多重迴圈所導致的冗長效應,這是一般新手容易犯的盲點。
- 註2:將重複的部份「成績表.maxBy(學生成績::總分).總分」給抽離出迴圈或 Iterative 外,以達到最佳執行效能之優化。
註1與註2只是將程式碼做適當的調整,這不起眼的小細節,當在處理少量資料時不易察覺,但在處理大量資料時卻有著極大的效能差異表現。
|