我們應當忘記小的效能優化,百分之九十七的情況下,過早的優化都是萬惡之源這句話在很多時候都被引用到,以至於"不要優化"(注意,是"不要優化"而不是「不要過早優化」)已經深入人心,過度地推崇這條建議經常會成為如下行為的藉口
還有另乙個常識:優化是不重要的,這條常識的理由,在程式設計師工具箱中最強大的優化技術就是不做優化
有幾個理由支援這條禪式的忠告:其中乙個是摩爾定律的指數效應----最聰明,最便宜,常常也是最迅速的效能提公升方法,就是等上幾個月,期待硬體效能更好
但是,時代是會變化的,如今,單個核心的效能增長非常慢,而且,如今的程式還必須執行在移動平台上(已經成為大多數),電池的電量和散熱都制約了指令的執行效率,而優化,可以讓程式永遠保持活力
而且說效能無所謂的,只限於某些程式,對於工作負載很大以至於需要分布式處理的程式,效能影響就會非常大,以至於小小的優化都能節約莫大的成本,例如從1000臺雲主機將到只需600臺
1.使用更好的編譯器,然後開啟它們的優化選項
2.使用更好的演算法,而不是英勇地去改進演算法
3.使用更好的庫
4.減少記憶體分配和複製,這是乙個很有用的優化手段
5.使用更好的資料結構
6.提高並發行
之前使用了gtest測試框架,覺得gtest的測試用例所使用的形式深的我心,於是仿照其形式寫了乙個測試執行時間的,如下
**
#include
#include
#include
using
namespace std::chrono;
namespace _timetest
void
clear()
void
start()
bool
isstarted()
const
unsigned
long
getms()
return0;
}private
: system_clock::time_point m_start;};
class
timebasetest
static timerbase timer;};
timerbase timebasetest::timer;
std::queue
> tests;
}#define test_class(test_case_name) \
class test_class_##test_case_name : public _timetest::timebasetest \
void run();\
};\/* test_class_instance
* 1.delcare the test class test_class_test_case_name
* 2.get a instance of the class
* 3.define the run() for the class
* */
#define test_class_instance(test_case_name) \
test_class(test_case_name);\
auto test_case_name##_instance = new test_class_##test_case_name;\
void test_class_##test_case_name::run()
#define timetest(test_case_name) test_class_instance(test_case_name)
#define runalltimetest(); \
while(!_timetest::tests.empty())\
\intmain()
將上面的**儲存為timetest.h
然後使用的測試**如下
#include
"timetest.h"
timetest
(test_1)
timetest
(test_2)
然後執行g++ test.cpp -std=c++11
編譯,執行結果如下
準備工作完成之後,讓我們開始優化之旅
C 測試程式執行時間
1.時間測試 datetime starttime datetime.now timespan timespan 程式主體 timespan datetime.now.subtract starttime 獲取就是開始時間很結束時間差 2.用於.net環境的時間測試 只測試 在自身程序中的時間 ne...
C語言測試程式執行時間
clock t clock void 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之為掛鐘時間 wal clock 其中clock t是用來儲存時間的資料型別,在time.h檔案中,可以找到它的定義,顯然clo...
C 程式執行時間
在c 程式的效能分析中,其中重要的一項就是程式的執行時間。雖然程式的執行速度與計算機的配置 計算機的當前狀態等有很大關係,但在相對一致的外部環境下,程式執行時間的長短在很大程度上是可以反映程式效率的。1.一般計時方法 在ctime標頭檔案中,c 提供了計時函式 clock 其返回資料型別為 cloc...