मेरे SAX xml पार्सिंग कॉलबैक (एक्सकोड 4, एलएलवीएम) में, मैं इस प्रकार के कोड पर बहुत सी कॉल कर रहा हूं:क्या मैं कॉन्स्ट char * पर स्ट्रेल को अनुकूलित करने के लिए अपने कंपाइलर पर भरोसा कर सकता हूं?
static const char* kFoo = "Bar";
void SaxCallBack(char* sax_string,.....)
{
if (strcmp(sax_string, kFoo, strlen(kFoo)) == 0)
{
}
}
क्या यह मानना सुरक्षित है कि स्ट्रेल (केएफयू) को संकलक द्वारा अनुकूलित किया गया है ?
(ऐप्पल नमूना कोड की पूर्व गणना की गई स्ट्रेल (केएफयू) थी, लेकिन मुझे लगता है कि यह लगातार स्ट्रिंग्स की बड़ी संख्या के लिए त्रुटि प्रवण है।)
संपादित करें: अनुकूलन के लिए प्रेरणा: आईपॉड पर मेरे एसवीजी मानचित्र को पार्स करना स्पर्श 2 जी NSXMLParser का उपयोग करके 5 सेकंड (!) लेता है। तो, मैं lib2xml पर स्विच करना चाहता हूं, और स्ट्रिंग तुलना को अनुकूलित करना चाहता हूं।
शुरुआती लोगों को अनुकूलन सलाह: नहीं। विशेषज्ञों को अनुकूलन सलाह: अभी तक नहीं। जब तक प्रोफाइलिंग ने यह नहीं दिखाया है कि बोतल की गर्दन आपके कार्यक्रम में है, मुझे लगता है कि आपको इसके बारे में चिंता नहीं करनी चाहिए। – freespace
आपका मतलब है 'strncmp', है ना? क्योंकि आप केवल 'strcmp' (दो तर्कों के साथ) का उपयोग कर सकते हैं और यह वर्तमान में लिखे गए शर्त के बराबर होगा। –
@ फ्रीस्पेस सवाल यह है कि "क्या मैं अनुकूलित करने के लिए अपने कंपाइलर पर भरोसा कर सकता हूं ...?"। जब तक आपको लगता है कि यह सलाह कंपाइलर्स पर लागू नहीं होती है, तो मुझे नहीं लगता कि यह इस प्रश्न के लिए प्रासंगिक कैसे है। –