don』t cut yourself: code optimization as a double-edged sword。中文翻譯:過早優化是萬惡之源。
**優化的好處多多,但是這並不意味著所有的**都需要進行優化,有時過度的優化反而適得其反——費時、費力、不討好。
「現代電腦科學的鼻祖」donald knuth曾說過「過早的優化是萬惡之源」,因為:讓正確的程式更快,要比讓快速的程式正確容易得多。文中講了7個原則,簡單羅列如下:
1. 究竟要優化什麼?
2. 選擇乙個正確的優化指標
3. 優化在刀刃上
4. 優化層次越高越好
5. 不要過早優化
6. 依賴性能分析,而不是直覺
7. 優化不是萬金油
更詳細的大家可以看英文:
為什麼把這個話題拿出來討論下,因為我現實中發現過早優化,其實是乙個非常容易犯的錯誤。舉幾個例子:
1、資料庫優化中,為了效能優化,放棄通用性,把sql全部用c語言重寫,這種技術是不可能得到發展的。
2、hadoop領域裡面,tez/stringer為了解決hive效能,只是將m/r通過dag作業來替代,將多個作業用乙個作業來替代,減少中間過程。但是實際上hive用在查詢上,除了m/r效率底下外,還有程序啟動代價太高,以及最主要的是資料儲存不是專門為分析場景準備的。所以我預計如果tez/stringer只是按照目前的思路優化,最後肯定曇花一現。
3、shark,hive on spark。簡單的將hive拿到spark上來,從最新資料來看,databricks 已經被放棄了shark,轉而將重心放到 spark sql上面來。
不要為了優化而優化,優化應該先做好頂層設計,再落地到具體的技術細節,否則優化出來的東西,不會有長久的生命力。
萬惡之源 再談編碼
1.is和 區別 id 內建函式 判斷兩邊的值 is 判斷記憶體位址 回顧編碼 1.ascii 英文,特殊字元,數字,8bit,1byte 2.gbk 中文 16bit,2byte.相容ascii 3.unicode 萬國碼,32bit 4byte.相容ascii 4.utf 8 長度可變的unic...
萬惡之源 檔案操作
檔案操作 f open 檔名,mode 模式 encoding 編碼格式 模式 r,w,a,r w a rb,wb,ab,r b,w b,a b 1 開啟檔案,得到檔案控制代碼並賦值給乙個變數 f open a.txt r encoding utf 8 預設開啟模式就為r 2 通過控制代碼對檔案進行...
05 萬惡之源 基本資料型別 dict
1.字典的簡單介紹 2.字典增刪改查和其他操作 3.字典的巢狀 一.字典的介紹 字典 dict 是python中唯一的乙個對映型別.他是以括起來的鍵值對組成.在dict中key是唯一的.在儲存的時候,根據key來計算出乙個記憶體的位址.然後將key value儲存在這個位址中.這種演算法被稱為has...