2012-04-10 3 views
13

हाय मुझे पता है कि स्ट्रिंग वर्ग के "replaceAll" समारोह के समय जटिलता है क्या, लेकिन मैं इस पर कोई जानकारी प्राप्त नहीं कर सकते हैं। (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html)जावा में जावडोक में प्रत्येक फ़ंक्शन का समय/स्थान जटिलता क्यों नहीं है?

यह बेहतर हो नहीं चाहेंगे जावा शामिल करने के लिए जावाडोक में जटिलताओं? मेरा मानना ​​है कि किसी के लिए यह जानना बहुत महत्वपूर्ण बात है।

उत्तर

9

अधिकांश कार्यों में काफी सीधे समय की जटिलताएं होती हैं। AFAIK, replaceAll O (n)

IMHO है। अपने आप को अनुभवी रूप से परीक्षण करने में कुछ भी नहीं है एक प्रोफाइलर के साथ, क्योंकि इसकी अत्यधिक संभावना है कि आपके द्वारा उपयोग किए जाने वाले 99% तरीकों का आपके आवेदन के प्रदर्शन पर कोई प्रभाव नहीं पड़ता है।

3

यदि गारंटी हो तो जटिलता को दस्तावेज किया जा सकता है। उदाहरण के लिए, कुछ संग्रह वर्ग दस्तावेज़ जटिलता गारंटी देता है। उदाहरण के लिए, HashMap से:

इस कार्यान्वयन बुनियादी कार्यों के लिए लगातार समय प्रदर्शन (हो और डाल) ...

प्रदान करता है लेकिन, कभी कभी जटिलता है:

  • गारंटी नहीं है, और कार्यान्वयन में संशोधन के साथ बदलने के लिए स्वतंत्र है।
  • जाहिर है ओ (1)।
1

जावा एपीआई के javadocs क्या की एक सामान्य अनुबंध में यह प्रत्येक विधि द्वारा किया जाना चाहिए, नहीं कैसे। एपीआई के प्रत्येक कार्यान्वयन (कहें, ओपनजेडीके, ओरेकल के जेडीके इत्यादि) प्रत्येक अनुबंध को कार्यान्वित करने के बारे में एक निश्चित स्वतंत्रता है, और स्वतंत्रता में अनुकूलन, प्रदर्शन में बलिदान भी शामिल हो सकते हैं। इसलिए सामान्य रूप से javadocs फ़ंक्शन के समय/जटिलता जैसे विवरण निर्दिष्ट नहीं करते हैं, जब तक कि यह कुछ प्रदर्शन आवश्यकताओं को पूरा करने के लिए किसी विधि के लिए बिल्कुल जरूरी नहीं है।

0

यदि आप डिज़ाइन निर्णयों को चलाने के लिए मूल संचालन की स्पेस/टाइम जटिलता का उपयोग कर रहे हैं, तो आप लगभग निश्चित रूप से गलत कर रहे हैं।

पहले सही एप्लिकेशन बनाएं, फिर प्रोफाइल करें। फिर अनुकूलित करें कि प्रोफाइलिंग प्रक्रिया बाधाओं के रूप में क्या प्रकट करती है।

0

सामान्य उत्तर यह है कि जटिलता आमतौर पर उन कारकों पर निर्भर करती है जो विश्लेषण करना बहुत मुश्किल हैं। यह निश्चित रूप से String.replaceAll के लिए लागू होता है, जहां प्रभावी जटिलता regex स्ट्रिंग पर गंभीर रूप से निर्भर करती है। (एक खराब डिजाइन किए गए रेगेक्स मेलिंग वेरी धीमी गति से बना सकता है।)

संबंधित मुद्दे