我正在處理一個非常耗時的應用程序,我想加快一點。我使用ctime庫的clock()函數分析了單個部件的運行時間,發現了一些東西,這對我來說並不完全清楚。C++加速方法調用
我有時間打印方法的外部和內部,我們稱之爲Method1。 Method1內部的打印包括它的整個主體,當然只有浮動的返回被排除。那麼,事情是,外面的打印狀態是Method1內部打印時間的兩倍到三倍。很明顯,外面的印刷品應該陳述更多的時間,但差異對我來說似乎相當大。
我的方法如下所示,我使用引用和指針作爲參數來防止數據複製。請注意,數據向量包含330.000個指向實例的指針。
float ClassA::Method1(vector<DataClass*>& data, TreeClass* node)
{
//start time measurement
vector<Mat> offset_vec_1 = vector<Mat>();
vector<Mat> offset_vec_2 = vector<Mat>();
for (int i = 0; i < data.size(); i++)
{
DataClass* cur_data = data.at(i);
Mat offset1 = Mat();
Mat offset2 = Mat();
getChildParentOffsets(cur_data, node, offset1, offset2);
offset_vec_1.push_back(offset1);
offset_vec_2.push_back(offset2);
}
float ret = CalculateCovarReturnTrace(offset_vec_1) + CalculateCovarReturnTrace(offset_vec_2);
//end time measurement
return ret;
}
是否有任何「明顯」的方式來提高通話速度?爲了可讀性的原因,我寧願保留該方法,因此,我可以改變任何事情以加快速度?
我很欣賞任何建議!
除非您找到內聯您的功能的方法,否則增加呼叫速度的可能性不大。 –
一個顯而易見的方法是設置編譯器的優化標誌。但是您應該詳細描述該方法的功能,方法簽名不會給我們任何提示。 –
可能有析構函數調用佔用時間...如果在函數內部創建了很多複雜的結構,可能會有很多要清理的東西 – vu1p3n0x