সাধারণ ব্যবহারের জন্য, স্ট্রিংবিল্ডার শ্রেণীর সাথে জড়িত সমাধানগুলি বহু-চরিত্রের স্ট্রিংগুলি পুনরাবৃত্তি করার জন্য সেরা। এটি বিপুল সংখ্যক স্ট্রিংয়ের সংমিশ্রণটি এমনভাবে পরিচালনা করতে অনুকূলিত হয়েছে যাতে সহজ কন্টেন্টেশনটি পারে না এবং হাত দিয়ে আরও দক্ষতার সাথে কাজ করা কঠিন বা অসম্ভব। এখানে দেখানো স্ট্রিংবিল্ডার সমাধানগুলি সম্পূর্ণ করতে ও (এন) পুনরাবৃত্তিগুলি ব্যবহার করে , এটি বারবার সংখ্যার সমানুপাতিক সমতল হার।
তবে, খুব বড় সংখ্যক পুনরাবৃত্তি, বা যেখানে উচ্চ স্তরের দক্ষতা এটি থেকে ছিটানো উচিত, সেখানে স্ট্রিংবিল্ডারের মৌলিক কার্যকারিতার অনুরূপ কিছু করার জন্য তবে মূল স্ট্রিংয়ের পরিবর্তে গন্তব্য থেকে অতিরিক্ত অনুলিপি তৈরি করা আরও ভাল পদ্ধতির, নীচের হিসাবে.
public static string Repeat_CharArray_LogN(this string str, int times)
{
int limit = (int)Math.Log(times, 2);
char[] buffer = new char[str.Length * times];
int width = str.Length;
Array.Copy(str.ToCharArray(), buffer, width);
for (int index = 0; index < limit; index++)
{
Array.Copy(buffer, 0, buffer, width, width);
width *= 2;
}
Array.Copy(buffer, 0, buffer, width, str.Length * times - width);
return new string(buffer);
}
এটি প্রতিটি পুনরাবৃত্তির সাথে উত্স / গন্তব্য স্ট্রিংয়ের দৈর্ঘ্য দ্বিগুণ করে, যা প্রতিবার রিসেট কাউন্টারগুলির ওভারহেড সংরক্ষণ করে এটি প্রতিটি স্ট্রিংয়ের মধ্য দিয়ে যায়, পরিবর্তে সহজেই এখন দীর্ঘতর স্ট্রিংটি পড়ে এবং অনুলিপি করে যা আধুনিক প্রসেসরগুলি অনেক কিছু করতে পারে আরও দক্ষতার সাথে।
স্ট্রিংয়ের দৈর্ঘ্য দ্বিগুণ করার জন্য কতবার এটি প্রয়োজন তা খুঁজে পেতে এটি বেস -২ লোগারিদম ব্যবহার করে এবং এরপরে বহুবার তা চালিয়ে যায়। যেহেতু অনুলিপি করা বাকীটি এখন সেটির অনুলিপি করা মোট দৈর্ঘ্যের তুলনায় কম, সুতরাং এটি ইতিমধ্যে যা তৈরি করেছে তার একটি উপসেট অনুলিপি করতে পারে।
স্ট্রিংবিল্ডারের ব্যবহারের উপর আমি অ্যারে.কপি () পদ্ধতিটি ব্যবহার করেছি, স্ট্রিংবিল্ডারের সামগ্রীটি নিজেই অনুলিপি করার সাথে প্রতিটি পুনরাবৃত্তির সাথে সেই সামগ্রীর সাথে একটি নতুন স্ট্রিং উত্পাদন করার ওভারহেড থাকবে। অ্যারে.কপি () এটিকে এড়িয়ে চলে, যখন এখনও অত্যন্ত উচ্চ দক্ষতার সাথে কাজ করে।
এই সমাধানটি ও (1 + লগ এন) পুনরাবৃত্তিগুলি সম্পূর্ণ করতে লাগে , এমন একটি হার যা পুনরাবৃত্তির সংখ্যার সাথে লগারিদমিকভাবে বৃদ্ধি পায় (পুনরাবৃত্তির সংখ্যা দ্বিগুণ করা একটি অতিরিক্ত পুনরাবৃত্তির সমান), অন্যান্য পদ্ধতির তুলনায় যথেষ্ট পরিমাণে সঞ্চয়, যা আনুপাতিকভাবে বৃদ্ধি পায়।