इस कार्यक्रम:एंडल को " n" के पर्याय के रूप में क्यों उपयोग किया जाता है, भले ही यह महत्वपूर्ण प्रदर्शन दंड का कारण बनता है?
#include <iostream>
#include <cstdlib>
#include <string>
int main(int argc, const char *argv[])
{
using ::std::cerr;
using ::std::cout;
using ::std::endl;
if (argc < 2 || argc > 3) {
cerr << "Usage: " << argv[0] << " [<count>] <message>\n";
return 1;
}
unsigned long count = 10000;
if (argc > 2) {
char *endptr = 0;
count = ::std::strtoul(argv[1], &endptr, 10);
if ((argv[1][0] == '\0') || (*endptr != '\0')) {
cerr << "Usage: " << argv[0] << " [<count>] <message>\n";
return 1;
}
}
const ::std::string msg((argc < 3) ? argv[1] : argv[2]);
for (unsigned long i = 0; i < count; ++i) {
cout << i << ": " << msg << '\n';
}
return 0;
}
तो जैसे समय समाप्त हो गया जब:
$ time ./joe 10000000 fred >/dev/null
real 0m15.410s
user 0m10.551s
sys 0m0.166s
वास्तविक समय पर अमल करने की 15.4 सेकंड लेता है। इस के साथ उत्पादन लाइन बदलें: cout << i << ": " << msg << endl;
और आप कुछ इस तरह के साथ अंत:
$ time ./joe 10000000 fred >/dev/null
real 0m39.115s
user 0m16.482s
sys 0m15.803s
आप देख सकते हैं, समय युगल की तुलना में अधिक चलाने के लिए, और कार्यक्रम के खर्च करने के लिए ओएस में कम से कम समय खर्च से चला जाता है ओएस में इसका लगभग आधा समय है।
कार्यक्रम के दोनों संस्करणों में समान आउटपुट होता है, और मानक द्वारा प्रत्येक प्लेटफ़ॉर्म पर समान आउटपुट होने की गारंटी दी जाती है।
को देखते हुए यह, क्यों लोगों के लिए '\n'?
संपादित एक पर्याय के रूप endl
का उपयोग करने में जारी रहती है: मामले में यह नहीं स्पष्ट है, इस सवाल का एक प्रमुख सवाल करने का इरादा और यहाँ शिक्षण उद्देश्यों के लिए है है है । मुझे पता है कि प्रदर्शन दंड क्यों मौजूद है।
क्या आप मुझे बता सकते हैं कि मानक के कौन सा हिस्सा सभी प्लेटफॉर्म पर आउटपुट समान होगा? – Glen
देखें: http://stackoverflow.com/questions/213907/c-stdendl-vs-n –