ডেটাটেইল লুপ পারফরমেন্স তুলনা

নিম্নলিখিত কোনটি সেরা পারফরম্যান্স আছে?

আমি ব্যাপক কর্মক্ষমতা লাভ সঙ্গে জাভাস্ক্রিপ্ট বাস্তবায়িত দুটি পদ্ধতি দেখা যায়, যাইহোক, আমি C# কোন লাভ পরিমাপ করতে অক্ষম ছিল এবং কম্পাইলার ইতিমধ্যে পদ্ধতি 2 মত লিখিত যদিও পদ্ধতি 2 2 হয়।

পদ্ধতি 2 এর পিছনে তত্ত্ব হল যে কোডটি ডেটাটেইল.আরও অ্যাক্সেস করতে হবে না। প্রতিটি পুনরাবৃত্তির উপর হিসাবটি, এটি int int ব্যবহার করতে পারে।

পদ্ধতি 1

for (int i = 0; i < DataTable.Rows.Count; i++) {
    // Do Something
}

পদ্ধতি ২

for (int i = 0, c = DataTable.Rows.Count; i < c; i++) {
    // Do Something
}
0
ro fr hi

1 উত্তর

না, এটা এমন করতে পারে না যেহেতু মূল্যের জন্য ধ্রুবক প্রকাশ করার কোন উপায় নেই

কম্পাইলার যদি এটি করতে সক্ষম হয়, তাহলে মানটি ধ্রুবক মানের ফিরে পাওয়ার কোড থেকে একটি গ্যারান্টি হতে হবে এবং লুপের সময় পরিবর্তন করা হবে না।

কিন্তু, এই ক্ষেত্রে, আপনি আপনার লুপের অংশ হিসাবে ডাটা টেবিলে নতুন সারিগুলি যুক্ত করতে পারবেন, এবং এইভাবে আপনার কাছে যে গ্যারান্টিটি তৈরি করা হয়েছে সেভাবেই আপনি এটি করেছেন

তাই সংক্ষিপ্ত ইন, কম্পাইলার যে অপ্টিমাইজেশান করবেন না যদি শেষ সূচক একটি পরিবর্তনশীল ছাড়া অন্য কিছু।

একটি পরিবর্তনশীল ক্ষেত্রে, যেখানে কম্পাইলার শুধু লুপ-কোড দেখতে পারেন এবং দেখতে পারেন এই নির্দিষ্ট পরিবর্তনশীল পরিবর্তন করা হয় না, এটি করতে পারে এবং লুপটি শুরু করার আগে এটি একটি রেজিস্টারে মান লোড করতে পারে, কিন্তু এটি থেকে কোন পারফরম্যান্স লাভ সম্ভবত নেগেটিভ হবে, যদি না আপনার লুপ শরীর খালি হয়।

উপসংহার: যদি আপনি জানেন, বা গ্রহণ করতে ইচ্ছুক, শেষ লুপ সূচক লুপের স্থিতির জন্য ধ্রুবক, এটি একটি পরিবর্তনশীল মধ্যে রাখুন


Edit: Re-read your post, and yes, you might see negligible performance gains for your two cases as well, because the JITter optimizes the code. The JITter might optimize your end-index read into a direct access to the variable inside the data table that contains the row count, and a memory read isn't all that expensive anyway. If, on the other hand, reading that property was a very expensive operation, you'd see a more noticable difference.

0
যোগ