আমি এমন কিছু লোকের কাছ থেকে শুনেছি যারা বড় রেলের দৃশ্যগুলিকে ছোট আংশিকগুলিতে ভেঙে দেওয়ার বিষয়ে চিন্তিত:একটি আংশিক রেন্ডার করতে কত সময় লাগে? আংশিক কল করার কার্যক্ষমতার প্রভাব কি কোড পঠনযোগ্যতার সুবিধার চেয়ে বেশি হবে?
ইনলাইন রেন্ডারিং এর সাথে আংশিক রেন্ডারিং কতটা সহজ তুলনা করে তার উদাহরণ দেওয়ার জন্য আমি কিছু সংখ্যা চালিয়েছি, তাই আমরা পরে ট্রেডঅফ নিয়ে আলোচনা করতে পারি। এই কোডটিই আমি বেঞ্চমার্ক করতে ব্যবহার করেছি, একেবারে নতুন রেল অ্যাপে (config.cache_classes = true
সহ ):
<% require 'benchmark'
Benchmark.bmbm do |x|
x.report "inline" do
10000.times do -%>
<p>Hello!</p>
<% end
end
x.report "partial" do
10000.times do -%>
<%= render partial: "hello" %>
<% end
end-%>
<% end -%>
<p>Hello!</p>
এবং ফলাফল (2013 15" রেটিনা ম্যাকবুক প্রোতে রুবি 2.1 এবং রেল 4.0.2 ব্যবহার করে):
Rehearsal -------------------------------------------
inline 0.010000 0.000000 0.010000 ( 0.007045)
partial 0.970000 0.090000 1.060000 ( 1.050433)
---------------------------------- total: 1.070000sec
user system total real
inline 0.010000 0.000000 0.010000 ( 0.005529)
partial 0.920000 0.070000 0.990000 ( 0.997491)
সুতরাং, একটি আংশিক রেন্ডার একটি দ্রুত মেশিনে গড়ে প্রায় 0.1ms চলে। এটি ইনলাইন রেন্ডার করার চেয়ে অনেক ধীর, কিন্তু যথেষ্ট দ্রুত যে আপনার কাছে যখন ইউআরএল জেনারেশন, রেল হেল্পার এবং ব্রাউজার রেন্ডারিং সময় সম্পর্কে চিন্তা করার মতো জিনিস থাকবে তখন এটি লক্ষ্য করা কঠিন হবে৷
গতিই সবকিছু নয়
যদি আংশিক রেন্ডার করার পারফরম্যান্স অনেক খারাপ হয়, তবে আমি সম্ভবত বিশাল ভিউ আলাদা করার সিদ্ধান্ত নিতাম।
একটি বাক্যাংশ আছে, মেক ইট ওয়ার্ক, মেক ইট রাইট, মেক ইট ফাস্ট। আপনি যখন খুব বড় একটি ভিউ ঠিক করার চেষ্টা করছেন, তখন আপনি "মেক ইট ওয়ার্ক" মোড থেকে বেরিয়ে আসার চেষ্টা করছেন এবং আপনি শুধু "মেক ইট ফাস্ট" এ এড়িয়ে যেতে পারবেন না। আপনি আপনার কোডকে কম রক্ষণাবেক্ষণযোগ্য করে তুলবেন, এবং আপনি রিফ্যাক্টরিংয়ের কিছু সুযোগ মিস করতে পারেন, যা ক্যাশে করার সুযোগের দিকে নিয়ে যেতে পারে, যা আরও বড় পারফরম্যান্স সুবিধার দিকে নিয়ে যেতে পারে।
আপনি পরিমাপ না করা পর্যন্ত আপনি জানতে পারবেন না
আপনাকে আমার সংখ্যা বিশ্বাস করতে হবে না। আমি সুপারিশ করব যে আপনি করেননি! রুবির বেঞ্চমার্ক লাইব্রেরি আপনাকে আপনার নিজস্ব বেঞ্চমার্ক চালানোর জন্য কিছু সহজ টুল দেয়। নিউ রিলিক এবং মিনিপ্রোফাইলারের মতো আপনার সম্পূর্ণ স্ট্যাক প্রোফাইল করার জন্যও সরঞ্জাম রয়েছে। আমি আমার প্রতিদিনের কাজে এই তিনটিই বেশ নিয়মিত ব্যবহার করি।
আপনি যখন প্রোফাইল, সর্বদা প্রোডাকশন মোডে প্রোফাইল! রেল ডেভেলপমেন্ট এনভায়রনমেন্ট ক্লাস এবং ভিউ স্বয়ংক্রিয়ভাবে লোড করে, যা ডেভেলপ করার সময় কাজে লাগে, কিন্তু আপনার পারফরম্যান্স নম্বরকে মেরে ফেলবে।