2012-01-18 21 views
8

मैं एक कक्षा लिखने की प्रक्रिया में हूं जो शायद कोड की 3000 लाइनों के अंत में समाप्त हो जाएगा।क्या पृष्ठ पर एक बड़ी कक्षा शुरू करना इसे धीमा कर देता है?

जो मैं जानना चाहता हूं वह बहुत आसान है, प्रत्येक पृष्ठ के शीर्ष पर इस कक्षा को पृष्ठ के रनटाइम को धीमा कर देगा, भले ही केवल एक/दो ऑब्जेक्ट विधियों का उपयोग किया जाएगा? क्या यह मेरे सर्वर पर बहुत अधिक तनाव डालने जा रहा है यदि इसे दिन में कई हज़ार बार उपयोग किया जा रहा है?

यदि हां, तो क्या मुझे पूरी कक्षा को एक फ़ाइल में रखने के बजाय प्रत्येक विधि को संभालने के लिए एक्सटेंशन बनाना चाहिए?

संपादित

सबसे पहले, बस KingCrunch और Kenaniah दूर करने के लिए, इस वर्ग मेरी एपीआई, जो resultantly मतलब है कि यह डेटा पुन: प्राप्त करने के लिए कार्यों का एक बहुत रखती वेबसाइट और हमारे iPhone आवेदन पर प्रदर्शित करने के लिए है , हमारे पूरे फेसबुक एप्लिकेशन के साथ। तो हमारी वेबसाइट के आकार और क्षमताओं को देखते हुए 3000 लाइनें बहुत छोटी हैं, यह उल्लेख नहीं करती कि इनमें से 700 से अधिक पंक्तियां टिप्पणियां हैं। इसलिए मैं आपको आश्वस्त कर सकता हूं कि कोई डिज़ाइन दोष नहीं है, हालांकि संरचनात्मक दोष हो सकता है, यही कारण है कि मैं इस सवाल से पूछ रहा हूं ...

निर्माण कार्य केवल परिभाषित चर के लिए डिफ़ॉल्ट मान सेट करता है, और कुछ भी नहीं।

मैंने इस फ़ाइल को स्क्रैच से पूरी तरह से फिर से लिखा है, इसलिए कोई पुराना कोड नहीं है और मुझे पूरा यकीन है कि कक्षा के भीतर विधियां उतनी कुशल हैं जितनी संभवतः वे हो सकती हैं।

मैं अपने सर्वर उपयोग आदि की निगरानी कर रहा हूं, साथ ही अपाचे एब टूल का उपयोग करके यातायात की उच्च मात्रा को अनुकरण कर रहा हूं और हालांकि मेरी मेमोरी उपयोग बढ़ जाती है, ऐसा लगता है कि यह ठीक है।

+3

एक 3000 एलओएस-क्लास एक प्रदर्शन समस्या की तुलना में एक डिजाइन दोष की तरह लगता है ... – KingCrunch

+0

संक्षेप में, हाँ यह धीमा हो जाएगा क्योंकि यह उस वर्ग को शुरू करना है। यह शायद उतना बुरा नहीं है जितना आपको लगता है कि यह है। लगता है जैसे आप इस संबंधित प्रश्न को देखना चाहते हैं: http://stackoverflow.com/questions/1424382/one-compressed-file-of-classes-vs-multiple-class-files-in-php – tjarratt

+2

संक्षिप्त उत्तर: * हाँ*। लंबा उत्तर: कारकों का एक अनंत सेट है जो * एक पृष्ठ धीमा * है। कोड की 3000 लाइनों में आप * खो देते हैं * कहीं और बनाया जा सकता है। –

उत्तर

4

प्रत्येक पेज के शीर्ष पर इस वर्ग की शुरुआत होगी पेज

यह क्रम में जोड़ देगा के क्रम धीमा? हाँ। बेशक। कुछ भी मुफ़्त नहीं है। पार्स किए गए कोड की प्रत्येक पंक्ति में कुछ छोटा ओवरहेड होता है (हालांकि आप एपीसी जैसे ओपोड कैश के साथ इस लागत में से अधिकांश से छुटकारा पा सकते हैं)। हालांकि, हम शायद उप-मिलीसेकंद ओवरहेड से बात कर रहे हैं। सुनिश्चित करने का एकमात्र तरीका यह है कि इसे स्वयं प्रोफाइल करें।

क्या यह मेरे सर्वर पर बहुत अधिक तनाव डालने जा रहा है यदि इसे दिन में कई हज़ार बार उपयोग किया जा रहा है?

व्यक्तिगत अनुभव से, नहीं। लेकिन फिर, प्रोफाइल और खुद को मापें। आपको अपने सर्वर पर मूल प्रदर्शन मीट्रिक की निगरानी करनी चाहिए (सीपीयू उपयोग, भार औसत, आदि)। अपना परिवर्तन तैनात करें, और अपनी मीट्रिक देखें।

+0

पहले भाग के लिए, यह निर्भर करता है, अगर उसे 3k लाइनों की आवश्यकता है, और इसे कई वर्गों में विभाजित करने पर विचार करें, तो वह उन्हें सभी लोड कर देगा एक-एक करके, जो उसके प्रदर्शन को धीमा कर देगा। –

+0

हां, जिसमें दस 300 लाइन फाइलें शामिल हैं (एक बिट) एक 3000 लाइन फ़ाइल सहित धीमी है। फिर, दीवार के समय में वास्तविक अंतर शायद बहुत छोटा है। –

+1

लेकिन ऑटोलोडिंग के साथ, प्रत्येक अनुरोध के लिए प्रत्येक "सबक्लास" लोड करना आवश्यक नहीं हो सकता है, और यह एपीसी का उपयोग करने के लिए भी एक अच्छा औचित्य है –

1

नहीं, लॉक के बहुत से बने वर्ग को तुरंत चालू करने से, यह स्वचालित रूप से धीमा नहीं होता है।

वह तब तक है जब तक कि आप कन्स्ट्रक्टर में कुछ नहीं करते हैं, लेकिन फिर यह उस पर निर्भर करता है कि आप वहां क्या कर रहे हैं, और कक्षा कितनी बड़ी नहीं है।

1

नहीं, वास्तव में यह कई फ़ाइलों में इसे विभाजित करने से तेज़ है।

एकमात्र समस्या यह है कि अक्सर कोड का एक बड़ा ब्लॉक और संशोधन करना कठिन होता है।

संपादित करें: यदि सभी पंक्तियां उपयोगी हैं तो यह तेज़ होगा।यदि आपके पास बहुत पुराना कोड है तो आप एक सफाई समस्या पर विचार कर सकते हैं