রেলস - পার্টিয়ালগুলি ধীর দর্শনগুলি উপস্থাপন ব্যবহার করে?


16

আমি একটি রেল 3.1.0অ্যাপ্লিকেশনটিতে পারফরম্যান্সের সমস্যাগুলি নিয়ে আসছি , এখন আমি এআর এর সাথে আমার প্রশ্নগুলিতে গম্বুজ পরিবর্তন করেছি এবং তাই দেখাতে এখনও অনেক বেশি সময় লাগে, আমি বিভিন্ন পার্টিতে ভিউ, লুপ এবং তাই ভাগ করে রেখেছি যে ভিউয়ের ভিতরে এবং অন্যান্য পার্টির অভ্যন্তরে গতিশীলভাবে রেন্ডার করা হয়।

সুতরাং বিশাল সংখ্যক পার্টিয়াল রাখা কি খারাপ অভ্যাস?

সময়টি রেন্ডারিংয়ের সময় উন্নতি করতে পার্টিয়ালের সংখ্যা কমাতে হবে?

ধন্যবাদ

উত্তর:


5

আপনি একই সামগ্রীতে রেন্ডার করার সময় অনেকগুলি পার্টিয়াল এবং একটি একক দৃশ্যের মধ্যে কোনও উল্লেখযোগ্য রেন্ডারিং পারফরম্যান্স পার্থক্য সম্পর্কে আমি জানি ।

স্পষ্টতই, আপনি যদি কিছু ক্ষেত্রে কেবলমাত্র কিছু অংশ এবং অন্যান্য ক্ষেত্রে অন্য কিছু সরবরাহ করেন, যেমন আপনি কিছুটা গতি অর্জনের চেয়ে কার্যকরভাবে নির্দিষ্ট দৃশ্যের রেন্ডারিং ভলিউমকে হ্রাস করে।

অন্যদিকে, আমি সর্বদা পার্টিয়াল বিমূর্ততাগুলি বিবেচনা করি যা তাদের অস্তিত্বের ন্যায্যতার জন্য কমপক্ষে 2 টি আলাদা জায়গা থেকে ব্যবহার করা উচিত। পার্টিয়ালগুলি ব্যবহার করার অন্য কারণ হ'ল আপনি যখন একই দৃষ্টিভঙ্গিটি রেন্ডার করতে চান তবে কিছু ব্যবসায়িক যুক্তির ভিত্তিতে বিভিন্ন পার্টিয়াল লোড করুন।

হালনাগাদ:

রেন্ডারিং গতি সম্পর্কে আমি কোনও পরিমাপ বা কিছু কংক্রিট নম্বর দিতে পারি না। আপনি যদি কোনও দৃশ্যে একটি আংশিক ব্যবহার করেন তবে এটি রেন্ডার করতে আপনি রেন্ডার পদ্ধতিটি কল করেন, তাই দ্বিতীয় পদ্ধতি কল রয়েছে। এটি, যেমন আমি আমার উত্তরে বলেছিলাম, এটি প্রায় কিছুই নয় তবে জিনিসগুলিকে খুব অল্প গতিতে সহায়তা করতে পারে।

তবে আমি কোনও প্রকল্পের পার্টিশালগুলি সরিয়ে তার কার্যকারিতা সমস্যা সমাধানের কথা কখনও শুনিনি। পার্টিয়ালগুলি ভিউগুলিতে পুনরায় ব্যবহারের ব্যবস্থা করার একটি ভাল উপায় এবং প্রোগ্রামারদের দৃষ্টিভঙ্গি থেকে তাদের সেই সুযোগের জন্য ব্যবহার করা উচিত। দর্শনগুলির মধ্যে সাধারণ ধারণার জন্য এগুলি বিমূর্ত হওয়া উচিত।

আমি এমন একটি প্রকল্পে কাজ করেছি যেখানে পার্টিয়ালগুলি অতিরিক্ত ব্যবহৃত হত। রেলগুলি নয়, একই এমভিসি নীতিগুলি। আপনি কল্পনা করতে পারেন এমন সমস্ত কিছুর জন্য সামান্য পার্টিয়াল ব্যবহার করা যখন আপনি তাদের কয়েক ডজন শুরু করেন তখন তা খুঁজে পাওয়া শক্ত করে। আপনি কোন ইনপুটটি সংশোধন করতে চান? দেখুন মধ্যে? আংশিকভাবে? কোন দৃশ্যে এই দর্শনটির জন্য 4 টি পার্টিয়াল রয়েছে? ...

কিছু দৃ ref় রিফ্যাক্টরিংয়ের পরে, প্রতিটি ভিউয়ের আপডেটের সাথে আমরা অপ্রয়োজনীয় পার্টিয়ালগুলি সরিয়েছি। তারা সম্পূর্ণরূপে অদৃশ্য হয়ে যায় নি, তবে যা অবশিষ্ট রয়েছে সেগুলি অ্যাস্ট্রাকটিজেশন যা প্রকল্পের জন্য ভালভাবে সংজ্ঞায়িত। তারা ভালভাবে বোঝা উপাদানগুলি উপস্থাপন করে (কিছু ধরণের অবজেক্টের জন্য গাছের মতো, বা একটি নির্দিষ্ট তালিকার ধরণের) যা কোনও ফর্মে বা অন্যান্য দর্শনে পুনরাবৃত্তি করে। আমি জানি যদি আমি কোনও গাছ দেখি যে এর জন্য একটি আংশিক রয়েছে। আমি জানি যখন আমি নির্দিষ্ট ধরণের তালিকা দেখি যে এর জন্য একটি আংশিক রয়েছে। আমি তাদের শিকার না।

সফ্টওয়্যার কোড বেসের জন্য কোড পঠনযোগ্যতা সবচেয়ে গুরুত্বপূর্ণ কাজ।


সুতরাং মূলত, যদি আমার সত্যিকার অর্থে একটি আংশিক প্রয়োজন না হয়, যদি সেই কোডটি অন্য নিয়ামক দ্বারা পুনরায় ব্যবহার করা হয় না হে গতিশীলভাবে পুনরায় লোড করা আমার পার্টিয়ালগুলি ব্যবহার করা উচিত নয়? এবং এটির উপস্থাপনের সময়কে আরও উন্নত করবে?
মিঃ_নিজল

@ মিঃ নিজল: আপনার মন্তব্য দ্বারা উত্থিত সমস্যাগুলি কভার করতে আমি আমার উত্তর আপডেট করেছি। আমি আশা করি এই ব্যয়িত ব্যাখ্যাটি আরও বোধগম্য ... আমি কেবল বুঝতে পেরেছি যে উত্তরে আমার দ্বিতীয় অনুচ্ছেদটি ভুল বোঝাবুঝি হতে পারে।
প্যাটকোস সিএসবা

থ্যাঙ্কস ম্যান Code readability, এটাই সব।
মিঃ_নিজল

22

আমি উভয় উত্তর সাথে একমত। আমি কোডটি আংশিক থেকে পজিশনে রেখেছি যে এটি প্যারেন্ট ভিউতে আংশিক উপস্থিত রয়েছে এবং 500 পুনরাবৃত্তির সাথে, ভিউটি রেন্ডার করতে সময়টি ছাড়তে বিশাল 600 মিমি সময় নেয়। <% = রেন্ডার xyz%> আমার মতে খুব ভাঙা।

উদাহরণ, দেখুন রেন্ডার মোট সময়:

Before:
5759.8ms
5804.2ms
5973.6ms

After:
5268.7ms
5201.6ms
5222.4ms

Diff = 5846 - 5231 = 615 ms

সম্পাদিত

আমি _ মডেল আংশিকর মধ্যে সমস্ত _পরিশাল আনড্রাইং করে শেষ করে 2000 মিলিয়ন ডলারে নামিয়ে দিয়েছি, এই সময়ে আমি _আপনেলটিকে আংশিক সূচকে স্থানান্তরিত করার চেষ্টা করেছি তবে এটি রেন্ডারিংয়ের সময়গুলিতে কোনও প্রভাব ফেলেনি তাই আমার ধারণা এটি নেস্টেড রেন্ডার কলগুলির সাথে রয়েছে that এটা কি পারে.


নেস্টেড আংশিক উপর আকর্ষণীয় সন্ধান। আপনি কি বোঝাতে চেয়েছিলেন যে এক আংশিক হ্রাস 600ms অন ডিআরওয়াইং, এবং সমস্ত পার্টির আনডিআরওয়াইং 3800ms হ্রাস করেছে? আপনি কি এর জন্য ডেমো অ্যাপটি প্রকাশ করতে পারবেন?
লুলালালা

@ লুলালালা হ্যাঁ ঠিকই, এবং দুঃখিত আমি এটি আমার কাজটির মতো করতে পারি না এবং এখন আমি এটি জেলাগুলিতে জেলাগোতে সরিয়ে নিয়েছি সুতরাং সেই কোডটির সাথে আর যোগাযোগ নাও। ওয়াইয়াট বার্নেটের দিকে তাকিয়ে উত্তর দিয়েছে , আমি এখন নিশ্চিত নই যে আসলে হুডের নীচে পার্টিয়ালরা অদক্ষ ডিবি অ্যাক্সেস করছিল যা আমার আনডিআরইড কোডটি কোনওভাবে এড়িয়ে চলেছিল।
এজেপি

1
আমি একই জিনিস খুঁজে পেয়েছি। পার্টিটালগুলি ছাড়াই কোডটি বের করা এবং ভিডি আনডিআরওয়াই করা আমাকে ~ 450ms এর পারফরম্যান্সও বাড়িয়েছে।
বেকারম্যান

1
এইচএএমএল ভিউ সহ রেলগুলি ব্যবহারের আমার অভিজ্ঞতায়, প্রচুর ছোট ছোট পার্টিয়াল উল্লেখযোগ্যভাবে ধীরে ধীরে রেন্ডারিং করে। প্রতিটি আংশিকের জন্য একটি স্থির ওভারহেড রয়েছে বলে মনে হয়, পাশাপাশি কোনও ভিউতে প্রচুর পার্টিশন দেওয়ার সময় ময়লা আবর্জনা সংগ্রহ করা হয়। 50 টি আইটেমের একটি সারণীতে ব্যবহৃত আংশিক ইনলাইন করা পৃষ্ঠা রেন্ডারিংকে 500 এমএস দ্বারা হ্রাস করেছে।
d4n3

2
4 পাখি: আমি একটি বড় অ্যাপ্লিকেশনটিতে কয়েক হাজার নেস্টেড পার্টিয়াল সরিয়েছি এবং একটি বিশাল স্পিডআপ পেয়েছি। নম্বরগুলি না রাখুন, তবে হ্যাঁ, যদি আপনার পারফরম্যান্সে সমস্যা হয় তবে কিছু নেস্টেড পার্টিয়ালগুলি এটি সাহায্য করে কিনা তা সরিয়ে ফেলার উপযুক্ত।
রিক স্মিথ

5

কোনও রেল লোক নয়, তবে আংশিক দৃশ্যগুলি সম্ভবত প্রতি সমস্যা নেই the বরং মনে হচ্ছে আপনি কিছু নির্বাচন এন + 1 করছেন। ডিবি সার্ভারের দৃষ্টিভঙ্গি থেকে জিনিসগুলি দেখুন এটি নিশ্চিত করার জন্য যে আপনি এটি কোনও সজ্জার সাথে মারছেন না।


2

এখনই একটি রেলস 4.2 অ্যাপে কাজ করা যেখানে একটি ধীর পদক্ষেপ যা গড়ে প্রায় 745 মিমি নিয়েছে।

আমি যখন পার্টিটালগুলি থেকে কোডটি সরিয়ে এটিকে মূল টেম্পলেটটিতে রাখি তখন যে সময়টি লাগে তা এখন গড়ে 25 মিমি থেকে কম হয়।

পার্টিয়ালগুলি রেন্ডার করার জন্য কলগুলির সংখ্যা ছিল মাত্র ২৯।


2

আপনার যদি কোনও এন +1 সমস্যা না থাকে এবং সমস্ত ডাটাবেস সামনে কাজ করে (একটি পুনরাবৃত্ত সিটিই দিয়ে বলুন), নেস্টেড পার্টিশালগুলি এখনও খুব ধীর slow হামল এবং এরব দু'জনেই আমার দিকে ধীর দেখায়। 5.1.4 কারাগারে আমি প্রতিটি আংশিক, এবং মাঝে মাঝে পার্টিশালের জন্য কিছু মিলিসেকেন্ড দেখছি যা আরও খারাপ (সম্ভবত আবর্জনা সংগ্রহের সাথে সম্পর্কিত)।

আমি লক্ষ্য করেছি যে এর মধ্যে একটির অনুরোধ চলাকালীন আমি যদি আংশিক নাম পরিবর্তন করি তবে ফাইলটি কীভাবে পাওয়া যায় না সে সম্পর্কে আমি তাত্ক্ষণিকভাবে একটি ত্রুটি পেয়েছি। সুতরাং আপাতদৃষ্টিতে রেলগুলি আংশিক অফ ডিস্কটি পড়ছে, এটি পুনরায় প্রদর্শন করছে এবং প্রতিটি পুনরাবৃত্তির জন্য এটি মূল্যায়ন করছে। আস্তে আস্তে আশ্চর্য হ'ল না!


0

নেস্টেড পার্টিয়ালগুলিতে দেখা যায় এমন অনেক অলসতা কেবল বিকাশের সময় ঘটে। পরীক্ষায় উত্পাদনে স্যুইচ করুন।


সম্ভবত আপনি কেন বিকাশ সংস্করণটি প্রশংসনীয়ভাবে ধীরে ধীরে কমেন্ট করতে পারেন এবং কখন কী পরীক্ষার জন্য কোন মোডটি ব্যবহার করবেন সে সম্পর্কে আরও বেশি গুরুত্ব দেওয়া উচিত।
Kain0_0

খোলামেলাভাবে আমি সমস্ত বিবরণ জানি না, আমি কেবল জানি একই সমস্যাগুলি আমার মধ্যে ছিল এবং আমি যখন প্রযোজনায় স্যুইচ করেছিলাম তখন এটি অনেক উন্নত হয়েছিল। আমি অনুমান করতে পারি যে পল জাংওয়ার্থ লক্ষ্য করেছিলেন যে, ফাইলগুলি পরিবর্তিত হতে পারে যখন আংশিক পুনর্বারণ এবং পুনঃপ্রেরণ ঘটে development
জাফাফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.