কোড...
options.get(something, doThisMostOfTheTime)()
... দেখে মনে হচ্ছে এটি দ্রুত হওয়া উচিত, তবে এটি আসলে if
... elif
... else
নির্মাণের চেয়ে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে বেড়ে যায় ।
এই উদাহরণগুলি বিবেচনা করুন ...
1.পি
something = 'something'
for i in xrange(1000000):
if something == 'this':
the_thing = 1
elif something == 'that':
the_thing = 2
elif something == 'there':
the_thing = 3
else:
the_thing = 4
২.পি
something = 'something'
options = {'this': 1, 'that': 2, 'there': 3}
for i in xrange(1000000):
the_thing = options.get(something, 4)
3.পি
something = 'something'
options = {'this': 1, 'that': 2, 'there': 3}
for i in xrange(1000000):
if something in options:
the_thing = options[something]
else:
the_thing = 4
4.পি
from collections import defaultdict
something = 'something'
options = defaultdict(lambda: 4, {'this': 1, 'that': 2, 'there': 3})
for i in xrange(1000000):
the_thing = options[something]
... এবং তারা কতটা সিপিইউ ব্যবহার করে তা নোট করুন ...
1.py: 160ms
2.py: 170ms
3.py: 110ms
4.py: 100ms
... ব্যবহারকারীর সময় থেকে time(1)
।
অপশন # 4 এর প্রতিটি স্বতন্ত্র কী মিসের জন্য একটি নতুন আইটেম যুক্ত করার অতিরিক্ত মেমরির ওভারহেড রয়েছে, সুতরাং আপনি যদি সীমাহীন সংখ্যক স্বতন্ত্র কী মিস করতে চান তবে আমি বিকল্প # 3 নিয়ে যাব, যা এখনও একটি উল্লেখযোগ্য উন্নতি মূল নির্মাণ।
sort
অন্য কিছু চালিয়ে যাচ্ছেন তবে কী আপনি শৃঙ্খলা চালিয়ে যাচ্ছেন, যেমন শর্তগুলির মধ্যে একটির সাথে মিলবে এমন সমস্ত উপাদানগুলি একটি প্রান্তে রয়েছে এবং বাকী সমস্ত অংশগুলি অন্যদিকে রয়েছে? যদি তা হয় তবে আপনি দেখতে পেতেন যে এটি দ্রুত / আরও মার্জিত বা না। তবে মনে রাখবেন, পারফরম্যান্সের কোনও সমস্যা না থাকলে অপ্টিমাইজেশন সম্পর্কে চিন্তা করা খুব তাড়াতাড়ি।