কম্পিউটার

রুবি 2.5-এ কর্মক্ষমতার উন্নতি

নতুন রুবি সংস্করণগুলি উন্নতি করতে থাকে এবং রুবি 2.5 আলাদা নয়৷

রুবি 2.5 এই অপ্টিমাইজেশনগুলি প্রবর্তন করে:

  • একটি বড় স্ট্রিং তৈরি হলে স্ট্রিং ইন্টারপোলেশন প্রায় 72% দ্রুত হবে
  • স্ট্রিং#প্রেপেন্ড প্রায় 42% দ্রুত হবে যদি শুধুমাত্র একটি যুক্তি দেওয়া হয়
  • গণনাযোগ্য#sort_by, Enumerable#min_by &Enumerable#max_by প্রায় 50% দ্রুত হবে

আসুন কিছু বেঞ্চমার্ক দেখি!

স্ট্রিং ইন্টারপোলেশন পারফরম্যান্স

আমি এই অপ্টিমাইজেশানের জন্য কমিট মেসেজে উদাহরণ কোডটি নিয়েছি:

'benchmark/ips'Benchmark.ips করতে হবে |x| x.report "বড় স্ট্রিং ইন্টারপোলেশন" do |t| a ="Hellooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo)" b ="Woooooooooooooooooooooooooooooooo" t.times { "#{a}, #{b}!" } end x.report "Small string interpolation" do |t| a ="হ্যালো" b ="বিশ্ব" t.times { "#{a}, #{b}!" } শেষ x.compare!end

আমি নিম্নলিখিত ফলাফলের সাথে এই বেঞ্চমার্কটি চালিয়েছি৷

রুবি 2.4.1 :

ছোট স্ট্রিং ইন্টারপোলেশন:3236291.1 i/sLarge string interpolation:1711633.4 i/s - 1.89x ধীর

রুবি 2.5 :

ছোট স্ট্রিং ইন্টারপোলেশন:3125175.1 i/s বড় স্ট্রিং ইন্টারপোলেশন:2555782.6 i/s - 1.22x ধীর

আপনি দেখতে পাচ্ছেন যে বড় স্ট্রিংগুলির পার্থক্যটি বেশ অসাধারণ!

স্ট্রিং#প্রিপেন্ড পারফরম্যান্স

প্রিপেন্ড পদ্ধতি আপনাকে একটি অ্যারের সামনে কিছু পাঠ্য সন্নিবেশ করার অনুমতি দেয়৷

রুবি 2.5 সবচেয়ে সাধারণ কেসের জন্য অপ্টিমাইজ করে, শুধুমাত্র একটি স্ট্রিং অন্য স্ট্রিংকে অগ্রসর করে।

এখানে বেঞ্চমার্ক ফলাফল।

রুবি 2.4.1 ফলাফল:

স্ট্রিং#প্রিপেন্ড 3.428M (± 3.2%) i/s - 17.159M 5.011008s মধ্যে

রুবি 2.5 ফলাফল:

স্ট্রিং#প্রিপেন্ড 4.638M (± 3.6%) i/s - 23.276M 5.025562s মধ্যে

এটা বেশ ভালো উন্নতি!

গণনাযোগ্য কর্মক্ষমতা উন্নতি

কয়েকটি গণনাযোগ্য পদ্ধতি একটি কর্মক্ষমতা আপগ্রেড পাচ্ছে।

এই বিশেষ অপ্টিমাইজেশন কাজ করে কারণ এটি <=>-এর জন্য প্রেরন পদ্ধতি এড়িয়ে যায় পদ্ধতি।

কমিট মেসেজে বর্ণিত হিসাবে:

<=> এর পরিবর্তে বস্তুর তুলনা করতে OPTIMIZED_CMP() ব্যবহার করুন ফিক্সনাম/ফ্লোট/স্ট্রিং অবজেক্টের জন্য পাঠানোর পদ্ধতি।"

এখানে আমার বেঞ্চমার্ক ফলাফল।

রুবি 2.4.2 :

গণনাযোগ্য#sort_by 2.395k (± 6.7%) i/s - 11.952k in 5.014422sEnumerable#min_by 8.244k (± 6.1%) i/s - 41.405k in 5.042327 (± 6.7% 327s) সর্বাধিক। /s - 40.180k 5.015375s

রুবি 2.5 :

গণনাযোগ্য#sort_by 5.914k (± 6.7%) i/s - 29.786k in 5.062584sEnumerable#min_by 15.668k (± 3.0%) i/s - 78.888k 5.03974k-এর মধ্যে 5.03974k (সর্বোচ্চ। /s - 78.408k 5.046709s

এটি প্রায় 50% উন্নতি 🙂

পরিসীমা#মিনিট এবং রেঞ্জ#সর্বোচ্চ

আমি আপনার জন্য দুটি বোনাস কর্মক্ষমতা অপ্টিমাইজেশান আছে!

একটি হল রেঞ্জ#মিন এবং রেঞ্জ#সর্বোচ্চ পদ্ধতি।

এখানে মানদণ্ড রয়েছে:

রুবি 2.4.2

পরিসীমা#মিনিট 7.976M (± 3.0%) i/s - 39.950M 5.013242s রেঞ্জ# সর্বোচ্চ 7.996M (± 3.4%) i/s - 5.015984s মধ্যে 40.059M

রুবি 2.5

পরিসীমা#মিনিট 13.154M (± 3.0%) i/s - 5.002094s মধ্যে 65.731M রেঞ্জ# সর্বোচ্চ 13.021M (± 2.6%) i/s - 5.010924s মধ্যে 65.202M

এখানে প্রতিশ্রুতি খুঁজুন।

উন্নত স্ট্রিং#স্ক্যান

কমিট মেসেজ অনুযায়ী এটি একটি স্ট্রিং প্যাটার্নের জন্য 50% এবং রেজেক্স প্যাটার্নের জন্য 10% পারফরম্যান্স উন্নত করে।

আসুন বেঞ্চমার্কগুলি দেখি!

রুবি 2.4.2

স্ট্রিং#স্ক্যান - স্ট্রিং প্যাটার্ন 1.367M (±19.8%) i/s - 6.458M in 4.982047sString#scan - Regex প্যাটার্ন 1.228M (±17.0%) i/s - 4.983943s>প্রে 5.881M 

রুবি 2.5

স্ট্রিং#স্ক্যান - স্ট্রিং প্যাটার্ন 3.944M (±24.4%) i/s - 17.739M in 4.977417sString#scan - Regex প্যাটার্ন 1.696M (±17.4%) i/s - 4.982614s-এ 8.103M 

খুশি দ্রুত স্ক্যানিং!

সারাংশ

আপনি রুবি 2.5 এ আসছে নতুন অপ্টিমাইজেশন সম্পর্কে শিখেছেন, যা 25 ডিসেম্বর মুক্তি পাবে৷

এই অপ্টিমাইজেশানগুলি হল স্ট্রিং ইন্টারপোলেশন, গণনাযোগ্য পদ্ধতি, String#prepend পদ্ধতি, String#scan পদ্ধতি এবং Range#max / Range#mix পদ্ধতি।

আমি আশা করি আপনি এই পোস্টটি উপভোগ করেছেন!

পোস্টটি শেয়ার করতে ভুলবেন না আপনার প্রিয় সামাজিক নেটওয়ার্কগুলিতে 🙂


  1. মাইক্রোসফ্ট এজ ব্রাউজারে কর্মক্ষমতা স্ক্রোলিং উন্নতি

  2. রুবিতে বিটওয়াইজ হ্যাক

  3. রুবিতে ল্যাম্বডাস ব্যবহার করা

  4. রুবি 2.6-এ 9টি নতুন বৈশিষ্ট্য