2009-12-05 17 views
6

क्या मैं जितना चाहूं आंशिक रूप से आंशिक उपयोग कर सकता हूं या क्या मुझे अपने विचारों को अधिक ट्रैफिक के तहत क्रॉल में लाने से बचने के लिए खुद को रोकना है?आंशिक एक महंगा ऑपरेशन बुला रहा है?

+1

स्पष्ट रूप से कुछ ओवरहेड है, लेकिन मैंने जो कुछ भी देखा है वह आंशिक के साथ सारण करने के पक्ष में है। मैं उम्मीद कर रहा हूं कि लोग क्या जानते हैं कि वे इसका जवाब क्या दे रहे हैं। महान प्रश्न के लिए +1। –

+0

आम तौर पर, मैं कहूंगा "जितना चाहें उतना उपयोग करें।" लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आपके विशेष आंशिक रूप से प्रस्तुत करने में कितना समय लगता है। यदि आपका विकास लॉग पूंछ ('tail -f log/development.log') और एक पृष्ठ लोड करें, तो आप देखेंगे कि प्रत्येक आंशिक रूप से प्रस्तुत करने में कितना समय लगता है। यदि एक या अधिक रेंडर करने में धीमा है, तो इसे तेज करने या इसे कैश करने का एक तरीका ढूंढें। अन्यथा, कोई चिंता नहीं। –

उत्तर

11

आंशिक उपयोग करके एक स्पष्ट ओवरहेड है लेकिन यह ऐसा कुछ नहीं है जिसके बारे में आपको शायद चिंता करनी चाहिए।

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

लेकिन क्या यह लागत मायने रखती है? मेरे अनुभव में, 99% बार नहीं। यह भी ध्यान देने योग्य, कोड पठनीयता और रखरखाव के मामले में आंशिक उपयोग करने के लाभ आमतौर पर पसंद के लायक हैं।

यदि प्रदर्शन एक महत्वपूर्ण विशेषता होनी चाहिए, तो आपको शायद कहीं और गति और सुधार की तलाश करनी चाहिए।

याद रखें: रूबी एक सुपर-फास्ट प्रोग्रामिंग भाषा नहीं है और कोड अभिव्यक्ति हमेशा प्रदर्शन के पक्ष में पहली जगह लेती है। रेल इस टीम के लिए पूरी तरह से सहमत हैं, हालांकि रेल टीम ने हमेशा प्रदर्शन पर ध्यान केंद्रित किया है (और रेल 3 यह व्यावहारिक प्रदर्शन है हमेशा सुधार के लिए जगह है)

यह कहा गया है कि आप सुरक्षित रूप से आंशिक रूप से उपयोग कर सकते हैं और कुछ चालाक के साथ एप्लिकेशन ओवरहेड को कम कर सकते हैं कैशिंग तंत्र। उदाहरण के लिए, आप cache ब्लॉक में संग्रह प्रतिपादन स्थानांतरित कर सकते हैं ताकि एक संग्रह संग्रह कथन केवल एक बार निष्पादित किया जाएगा, तो आपका ऐप 10 अन-कैश किए गए आंशिक के बजाय 1 कैश फ़ाइल लोड करेगा।

शुरुआत में कई बार चुने गए सबसे चुपके त्रुटियों में से एक गलत तरीके से प्रदर्शन के बारे में चिंता करना था, जो वास्तव में बेंचमार्क चलाने के बिना था। मुझे एक बार याद है जब मैं एक हार्ड कोडेड हैश के पक्ष में एक एकल डेटाबेस क्वेरी छोड़ने की कोशिश कर रहा था क्योंकि "क्वेरी लागत", बिना किसी बेवकूफ पूछताछ के एक अन्य बेवकूफ क्वेरी थी जिसमें शामिल कथन के बिना एक संपूर्ण टेबल संग्रह लोड हो रहा था, जिसके परिणामस्वरूप दूसरी क्वेरी 3 गुना धीमी गति से चल रहा है।

तो, यदि आप वास्तव में प्रदर्शन की परवाह करते हैं, तो आपको शायद आंशिक उपयोग करने से बचना नहीं चाहिए, बल्कि इसके बजाय सुनिश्चित करें कि आप अन्य सभी सुविधाओं का लाभ उठा रहे हैं रेल आपको अपने आवेदन को स्केल करने के लिए प्रदान करता है।

+1

यह उत्तर है –

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