সেরা একটি স্ট্রিং পরিবর্তনশীল করার জন্য একটি স্ট্রিং সংযোজন প্রণালী ব্যবহার করা +
বা +=
। এটি কারণ এটি পাঠযোগ্য এবং দ্রুত। এগুলিও ঠিক তত দ্রুত, আপনি যেটি পছন্দ করেন তা স্বাদের বিষয়, পরেরটি সর্বাধিক সাধারণ। এখানে timeit
মডিউলটির সময় রয়েছে :
a = a + b:
0.11338996887207031
a += b:
0.11040496826171875
যাইহোক, যারা তালিকাগুলি রাখার এবং সেগুলিতে সংযোজন এবং তারপরে সেই তালিকায় যোগদানের পরামর্শ দেন, কারণ একটি তালিকায় একটি স্ট্রিং যুক্ত করা সম্ভবত স্ট্রিং বাড়ানোর তুলনায় খুব দ্রুত is এবং এটি সত্য হতে পারে, কিছু ক্ষেত্রে। এখানে উদাহরণস্বরূপ, এক-বর্ণের স্ট্রিংয়ের এক মিলিয়ন সংযোজন, প্রথমে একটি স্ট্রিংয়ে, এবং পরে তালিকাতে:
a += b:
0.10780501365661621
a.append(b):
0.1123361587524414
ঠিক আছে, দেখা যাচ্ছে যে ফলস্বরূপ স্ট্রিং যখন মিলিয়ন অক্ষর দীর্ঘ হয় তখনও সংযোজনটি আরও দ্রুত ছিল।
এবার এক হাজার চরিত্রের দীর্ঘ স্ট্রিংকে এক হাজার বার যুক্ত করার চেষ্টা করি:
a += b:
0.41823482513427734
a.append(b):
0.010656118392944336
শেষ স্ট্রিংটি প্রায় 100MB লম্বা হয়ে যায়। এটি বেশ ধীর ছিল, একটি তালিকায় যুক্ত হওয়া আরও দ্রুত ছিল। যে সময় চূড়ান্ত অন্তর্ভুক্ত না a.join()
। তাহলে আর কতক্ষণ লাগবে?
a.join(a):
0.43739795684814453
Oups। এমনকি এই ক্ষেত্রে সক্রিয় হয়, সংযোজন / যোগদান ধীর হয়।
সুতরাং এই সুপারিশ কোথা থেকে আসে? পাইথন 2?
a += b:
0.165287017822
a.append(b):
0.0132720470428
a.join(a):
0.114929914474
ঠিক আছে, আপনি যদি খুব দীর্ঘ স্ট্রিং ব্যবহার করেন (তবে আপনি সাধারণত নন, মেমরির 100MB এর স্ট্রিংটি কী থাকে?) সেখানে সংযোজন / যুক্ত হওয়া প্রান্তিকভাবে দ্রুত হয়
তবে আসল ক্লিঞ্জারটি পাইথন ২.৩ 3 যেখানে আমি আপনাকে সময়গুলিও দেখাব না, কারণ এটি এত ধীর যে এখনও শেষ হয়নি। এই পরীক্ষাগুলি হঠাৎ কয়েক মিনিট সময় নেয় । সংযোজন / যোগদান ব্যতীত যা পরবর্তী পাইথনের অধীনে তত দ্রুত।
হা. পাথরের যুগে পাইথনের পিছনে স্ট্রিং কনটেনটেশন খুব ধীর ছিল। তবে ২.৪-তে এটি (বা কমপক্ষে পাইথন ২.৪..7) নয়, সুতরাং পাইথন ২.৩ আপডেট হওয়া বন্ধ হওয়ার পরে ২০০৮ সালে অ্যাপেন্ড / যোগ দেওয়ার পরামর্শটি পুরানো হয়ে যায় এবং আপনার এটি ব্যবহার বন্ধ করে দেওয়া উচিত ছিল। :-)
(আপডেট: যখন আমি আরো সাবধানে যে ব্যবহার পরীক্ষা হয়নি দেখা যাচ্ছে +
এবং +=
পাইথন 2.3 তে দ্রুততর দুটি স্ট্রিং জন্য ভাল হিসাবে ব্যবহারের সুপারিশ। ''.join()
একটি ভুল বোঝাবুঝি হতে হবে)
তবে এটি সিপিথন। অন্যান্য বাস্তবায়নে অন্যান্য উদ্বেগ থাকতে পারে। এবং এটি হ'ল অপর কারণ কেন অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মূল। আপনি যদি প্রথমটি পরিমাপ না করেন তবে "দ্রুত" বলে মনে করা এমন কোনও প্রযুক্তি ব্যবহার করবেন না।
সুতরাং স্ট্রিং কনটেনটেশন করার জন্য "সেরা" সংস্করণটি হল + বা + = ব্যবহার করা । এবং যদি এটি আপনার পক্ষে ধীর হয়ে যায়, যা প্রায় অসম্ভব, তবে অন্য কিছু করুন।
তাহলে আমি কেন আমার কোডটিতে প্রচুর পরিমাণে সংযোজন / যোগদান করব? কারণ মাঝে মাঝে এটি আসলে পরিষ্কার হয়। বিশেষত যখন যা কিছু আপনার একসাথে করা উচিত তা স্পেস বা কমা বা নিউলাইন দ্বারা আলাদা করা উচিত।