की रनटाइम दक्षता को कैसे ढूंढें मैं एक प्रोग्राम की दक्षता को खोजने की कोशिश कर रहा हूं जिसे मैंने हाल ही में स्टैक ओवरफ्लो पर पोस्ट किया है।सी ++ कोड
How to efficiently delete elements from a vector given an another vector
अन्य उत्तर मैं chrono
वस्तु का उपयोग कर रहा के साथ अपने कोड की दक्षता में तुलना करने के लिए।
क्या रनटाइम दक्षता की जांच करने का यह सही तरीका है?
यदि नहीं तो कृपया उदाहरण के साथ ऐसा करने का एक तरीका सुझाएं।
#include <iostream>
#include <vector>
#include <algorithm>
#include <chrono>
#include <ctime>
using namespace std;
void remove_elements(vector<int>& vDestination, const vector<int>& vSource)
{
if(!vDestination.empty() && !vSource.empty())
{
for(auto i: vSource) {
vDestination.erase(std::remove(vDestination.begin(), vDestination.end(), i), vDestination.end());
}
}
}
int main() {
vector<int> v1={1,2,3};
vector<int> v2={4,5,6};
vector<int> v3={1,2,3,4,5,6,7,8,9};
std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
remove_elements(v3,v1);
remove_elements(v3,v2);
std::chrono::steady_clock::time_point end= std::chrono::steady_clock::now();
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() <<std::endl;
for(auto i:v3)
cout << i << endl;
return 0;
}
आउटपुट
Time difference = 1472
7
8
9
कैसे 'chrono' कॉल किया जा सकता है पर इस पढ़ें माप, अवैध माप। http://stackoverflow.com/q/37786547/3747990 – Niall
मुझे लगता है कि आपको एक ही कोड को कई बार निष्पादित करने के बेहतर परिणाम मिलेंगे और फिर औसत प्राप्त करें। – Neijwiert
सही माप के लिए आपको कम से कम तीन चीजों की आवश्यकता है: 1) गर्म करें (माप से पहले कई समान संचालन करें), 2) कई कॉलों का औसत परिणाम प्राप्त करें, 3) कंपाइलर के सुपर-ऑप्टिमाइज़ेशन से बचें (यदि यह पता लगा सकता है कि आप ' गणना के परिणामों का उपयोग नहीं करते हैं, यह सिर्फ इसे छोड़ सकता है)। – Ilya