2009-03-26 14 views
9

मैं अपने आवेदन पर "अनुकूलन" पर काम कर रहा हूं और मैं प्रस्तुत करने के अंत में रेल (संस्करण 2.2.2) आउटपुट को समझने की कोशिश कर रहा हूं।रेल पर रूबी को समझना

Rendered user/_old_log (25.7ms) 
Completed in 466ms (View: 195, DB: 8) | 200 OK 

और 'नई' रास्ता:

यहाँ "पुराने" तरीका है

Rendered user/_new_log (48.6ms) 
Completed in 337ms (View: 192, DB: 33) | 200 OK 

इन क्वेरी बिल्कुल वैसा ही थे, अंतर है पुराना तरीका लॉग फ़ाइलों को पार्स है जबकि नया तरीका डेटाबेस लॉग तालिका से पूछताछ कर रहा है।

पृष्ठ की वास्तविक गति समस्या नहीं है (उपयोगकर्ता समझता है कि यह धीमा अनुरोध है) ... लेकिन मैं चाहता हूं कि पृष्ठ जितनी जल्दी हो सके प्रतिक्रिया दे, भले ही यह "धीमा" पृष्ठ हो।

तो, मेरा सवाल यह है कि संख्याओं का प्रतिनिधित्व/मतलब क्या है? दूसरे शब्दों में, किस तरह से तेज विधि थी और क्यों?

उत्तर

14

यह:

Rendered user/_old_log (25.7ms) 

समय सिर्फ_old_log आंशिक टेम्पलेट रेंडर करने के लिए है, और ActionView::LogSubscriber

यह द्वारा कार्रवाई हो रही एक ActiveSupport::Notification से आता है:

Completed 200 OK in 466ms 

है http स्थिति वापस आ गई, साथ ही पूरे अनुरोध के लिए कुल समय। यह ActionController::LogSubscriber से आता है।

इसके अलावा, अंत में उन निक्षिप्त आइटम ध्यान दें:

(Views: 124.6ms | ActiveRecord: 10.8ms) 

उन, सभी डेटाबेस अनुरोध पूरे दृश्य (आंशिक & सब कुछ) और प्रतिपादन क्रमशः के लिए कुल समय है, और साथ ही ActionController::LogSubscriber से आते हैं।

-1

आपका नया तरीका कुल समय कम खर्च कर रहा है लेकिन टेम्पलेट को प्रस्तुत करने में अधिक समय लगता है।

+0

क्या आप इन्हें समझने के तरीके को तोड़ सकते हैं (या मुझे लिखने के लिए इंगित करें)? –

3

जॉर्डन का जवाब सही है। पैराफ्रेश करने के लिए, पहली बार पृष्ठ लोड होने का समय होता है। दूसरी बात यह है कि दृश्य उत्पन्न करने में कितना समय लगा। आखिरी संख्या यह है कि आपके डेटाबेस को आपके द्वारा भेजे गए सभी प्रश्नों को संभालने में कितना समय लगेगा।

आप अनुमान लगा सकते हैं कि आपके कंट्रोलर और मॉडल कोड ने पहले नंबर से अंतिम दो संख्याओं को घटाकर कितना समय लिया, लेकिन बेहतर तरीका Benchmark.measure विधि (http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html) का उपयोग करना होगा।

आपका नया तरीका सुधार हुआ प्रतीत होता है क्योंकि नियंत्रक/मॉडल में कोड तेज़ी से पूरा हो जाता है।

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