এখানে প্রচুর উত্তর রয়েছে এবং এগুলি সমস্ত দুটি পদ্ধতির উপর ভিত্তি করে:
- পদ্ধতি 1: দুটি সাবস্ট্রিং ব্যবহার করে স্ট্রিংটি বিভক্ত করুন এবং তাদের মধ্যে অক্ষরটি স্টফ করুন
- পদ্ধতি 2: স্ট্রিংটি অক্ষর অ্যারেতে রূপান্তর করুন, একটি অ্যারে সদস্যকে প্রতিস্থাপন করুন এবং এতে যোগদান করুন
ব্যক্তিগতভাবে, আমি এই দুটি পদ্ধতি বিভিন্ন ক্ষেত্রে ব্যবহার করব। আমাকে বিস্তারিত বলতে দাও.
@ ফ্যাবিওএফএমএস: আপনার পদ্ধতিটি আমি প্রথমে ব্যবহার করেছি এবং আমি ভয় পেয়েছিলাম যে প্রচুর চরিত্রের সাথে এটি স্ট্রিংয়ে খারাপ। তবে, প্রশ্নটি অনেকগুলি চরিত্র কী? আমি এটি 10 "লোরেম ইপসাম" অনুচ্ছেদে পরীক্ষা করেছি এবং এটি কয়েক মিলিসেকেন্ডে নিয়েছে। তারপরে আমি এটি 10 গুণ বৃহত্তর স্ট্রিংয়ে পরীক্ষা করেছি - আসলে কোনও বড় পার্থক্য ছিল না। হুঁ।
@vsync, @ কোরি মাওহওয়ার্টার: আপনার মন্তব্যগুলি দ্ব্যর্থহীন; তবে, আবার, একটি বড় স্ট্রিং কি? আমি সম্মত হয়েছি যে ৩২ ... ১০০ কেবি পারফরম্যান্সের জন্য আরও ভাল হওয়া উচিত এবং চরিত্র প্রতিস্থাপনের এই ক্রিয়াকলাপের জন্য একটি স্ট্রিং-বৈকল্পিক ব্যবহার করা উচিত।
তবে আমাকে বেশ কয়েকটি প্রতিস্থাপন করতে হবে তবে কী হবে?
সেক্ষেত্রে দ্রুততর কি তা প্রমাণ করার জন্য আমার নিজের পরীক্ষা করা দরকার। ধরা যাক আমাদের একটি অ্যালগরিদম আছে যা তুলনামূলকভাবে একটি ছোট স্ট্রিংকে 1000 অক্ষর সমন্বিত ম্যানিপুলেট করবে। আমরা প্রত্যাশা করি যে স্ট্রিংয়ের প্রতিটি অক্ষর ~ 100 বার প্রতিস্থাপন করা হবে। সুতরাং, এরকম কিছু পরীক্ষা করার কোডটি হ'ল:
var str = "... {A LARGE STRING HERE} ...";
for(var i=0; i<100000; i++)
{
var n = '' + Math.floor(Math.random() * 10);
var p = Math.floor(Math.random() * 1000);
// replace character *n* on position *p*
}
আমি এটির জন্য একটি ঝাঁকুনি তৈরি করেছি এবং এটি এখানে । দুটি পরীক্ষা রয়েছে, TEST1 (সাবস্ট্রিং) এবং TEST2 (অ্যারে রূপান্তর)।
ফলাফল:
- TEST1: 195ms
- পরীক্ষা 2: 6 এসএম
দেখে মনে হচ্ছে অ্যারে রূপান্তরটি 2 মাত্রার ক্রম দিয়ে বিস্তৃত হয়েছে! তো - এখানে কি হয়েছে ???
আসলে যা ঘটে তা হ'ল টেস্ট 2-এ সমস্ত ক্রিয়াকলাপ অ্যারেতে করা হয়, যেমন অ্যাসাইনমেন্ট এক্সপ্রেশন ব্যবহার করে strarr2[p] = n
। একটি বড় স্ট্রিংয়ের সাথে সাবস্ট্রিংয়ের তুলনায় অ্যাসাইনমেন্টটি আসলেই দ্রুত এবং এটি পরিষ্কার যে এটি জিতে চলেছে।
সুতরাং, এটি কাজের জন্য সঠিক সরঞ্জাম চয়ন সম্পর্কে about আবার।
str[0] = 'x'
কোনও ত্রুটি ছুঁড়েছে বলে মনে হচ্ছে না, তবুও কাঙ্ক্ষিত প্রভাব নেই!