मेरे पास कोड भर में कई स्थानों पर लॉगिंग फ़ंक्शन कहा जा रहा है। प्रत्येक लॉग में, मुझे 2 संकलन समय स्थिरांक प्रदान करना होगा।एक समारोह में संकलन समय स्थिरांक की आपूर्ति के लिए कौन सा दृष्टिकोण बेहतर है? फंक्शन तर्क बनाम टेम्पलेट पैरामीटर
(1) समारोह तर्क:
template<typename T>
void log (const T &obj, const int LINE, const int COUNT)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
के रूप में यह कॉल,
log(str, __LINE__, __COUNTER__);
(2) खाका पैरामीटर:
template<typename T, int LINE, int COUNT>
void log (T &obj)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
वहाँ 2 दृष्टिकोण पूरा करने के लिए कर रहे हैं
इसे कॉल करें,
log<__LINE__, __COUNTER__>(str);
मैं निर्णय लेने में सक्षम नहीं हूं, क्योंकि पहला दृष्टिकोण सादगी प्रदान करता है, लेकिन हम संकलन समय पर निरंतर गुजर रहे हैं। दूसरा दृष्टिकोण सही है, लेकिन संकलन समय शायद बढ़ेगा। यह कार्य कठिन है, और मैंने अभी तक उनमें से कोई भी लागू नहीं किया है, इसलिए मेरे पास कोई बेंच मार्क नहीं है।
अगर कोई व्यक्ति अपने अनुभव/ज्ञान से इसका उत्तर दे सकता है तो यह एक बड़ी मदद होगी।
आप "बेहतर" कैसे परिभाषित करते हैं? वे दोनों * काम *, तो आप यह कहने के लिए किस मानदंड का उपयोग करेंगे कि एक दूसरे से बेहतर है? –
@ निकोलबोलस, क्योंकि मैं संकलन समय और रनटाइम के आधार पर 2 के बीच बेहतर चुनना चाहता हूं। उदाहरण कोड में थोड़ा सा संशोधन भी है। – iammilind
जो कुछ भी 'लॉगिंग' फ़ंक्शन करता है, वह निश्चित रूप से * दो पूर्णांक को तर्क के रूप में गुजरने से धीमा हो जाएगा। तो मुझे नहीं लगता कि रनटाइम प्रदर्शन कितना भी बदल जाएगा। यह एक समयपूर्व अनुकूलन की तरह संदिग्ध लगता है। –