優化的第一要義是不做。
找到瓶頸:
don knuth寫到: 「乙個程式中少於百分之四的部分通常佔了程式一半以上的執行時間。
自動計時測量。
u n i x系統裡有關命令的名字是 time
%time slowprogram
real 7.0
user 6.2
sys 0.1
使用輪廓程式。除了可靠的計時方法外,在效能分析中最重要的工具就是一種能產生輪廓檔案的系統。輪廓檔案是對程式在哪些地方消耗了時間的一種度量。在有些輪廓檔案中列出了執行中呼叫的各個函式、各函式被呼叫的次數以及它們消耗的時間在整個執行中的百分比。
%cc -p spamtest.c -o spamtest
%spamtest
%prof spatest
在改造乙個程式,設法把它弄得更快之前,首先應該確定它確實太慢。然後應該通過計時工具和輪廓檔案,弄清時間到底跑到**去了。在你知道發生了什麼之後,有一些可以採用的策略。
使用更好的演算法或資料結構。要使程式執行速度快,最重要的因素是演算法與資料結構的選擇,有效的演算法和不那麼有效的演算法造成的差距是巨大的。例如用鍊錶代替二維陣列表示稀疏矩陣
讓編譯程式做優化。有一種毫不費力的改變就可能產生明顯的加速效果,那就是開啟編譯系統的所有優化開關。在開啟了優化程式之後,應該重新執行回歸測試集,就像你自己做了什麼改動一樣。
調整**。只要資料有足夠的規模,演算法的正確選擇就會顯示它的作用。
比較兩個距離,不需要求平方根,直接比較兩個距離的平方即可
不要優化那些無關緊要的東西。例如:作業系統的空轉迴圈
erlang 筆記 效能檢視函式
檢視程序數目是否正常,是否超過了erlang虛擬機器的最大程序數 erlang system info process count 檢視記憶體占用情況 erlang memory 最高的程序 spawn fun etop start end 看占用記憶體最高的程序狀態 erlang process ...
讀書筆記 效能調優
1.通常使用synchronized關鍵字同步 可讀性好,如果涉及效能問題,可以使用顯式的lock物件 2.免鎖容器 通用策略 對容器的修改可以與讀取操作同時發生,只要讀取者只能看到完成修改的結果即可。修改是在容器資料結構的某個部分的乙個單獨的副本上執行的,並且這個副本在修改過程中不可視。只有當完成...
ORACLE學習筆記 效能優化1
1.查詢正在執行語句的執行計畫 也就是實際語句執行計畫 select from v sql plan where hash value select sql hash value from v session where sid 1111 其中id和parent id表示了執行數的結構,數值最大的為...