प्रोफाइलिंग के माध्यम से मैंने पाया है कि यहां sprintf एक लंबा समय लगता है। क्या कोई बेहतर प्रदर्शन विकल्प है जो अभी भी वाई/एम/डी एच/एम/एस क्षेत्रों में अग्रणी शून्यों को संभालता है?मैं sprintf को कैसे सुधार/प्रतिस्थापित कर सकता हूं, जिसे मैंने एक प्रदर्शन हॉटस्पॉट के रूप में मापा है?
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
char buf[80];
for (int i = 0; i < 100000; i++)
{
sprintf(buf, "%4d-%02d-%02d %02d:%02d:%02d",
sysTime.wYear, sysTime.wMonth, sysTime.wDay,
sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
}
नोट: ओपी टिप्पणी है कि यह एक छीन नीचे उदाहरण है में बताते हैं। "असली" लूप में अतिरिक्त कोड होता है जो डेटाबेस से अलग-अलग समय मानों का उपयोग करता है। प्रोफाइलिंग ने अपराधी के रूप में sprintf()
को ठहराया है।
"लंबे समय तक कितना समय है "? मैं उम्मीद करता हूं कि यह मिलीसेकंड के बजाय माइक्रोसेकंड में होगा (सीपीयू के आधार पर) – Roddy
आप इसके बजाए अक्सर स्प्रिंटफ को कॉल करने के लिए एक रास्ता खोजने से बेहतर होगा। – Brian