بهبود سرعت کار با رشته ها در سی شارپ

شاید برای شما هم سوال باشد که نوع string و stringBuilder  با هم چه تفاوت هایی دارند و هر کدام از آنها برای چه کاری مفید هستند.

تقریبا هر دوی اینها برای کار با رشته ها استفاده می شوند. ولی stringBuilder بر روی ساخت رشته های تاکید در حالی که string عمومی تر به حساب می آید و عملیات های بیشتری را میتواند رو رشته ها انجام دهد.
نکته مهم این است که string به اندازه رشته ای که هم اکنون ذخیره کرده است ، فضا در اختیار می گیرد و برای عملیات هایی که مستلزم ساخته شدن رشته ای جدید ( حاصل AppendFormat یا Concat ) است بدون هیچ تصمیم گیری ، همیشه نمونه ای از نوع string برای ذخیره سازی نتیجه ی آن میسازد. در حالی که stringbuilder یا استفاده از مکانیزم اختصاص فضای با اندازه ای از پیش تعریف شده ( که کمتر از MaxCapecity و بیشتر یا مساوی Length است ) تنها در صورتی به افزایش فضای در دسترس اقدام می کند که به آن نیاز داشته باشد. هر چند این مقدار در زمان اجرا قبل تغییر است و همچنین در صورت نیاز افزایش می یابد، ولی همین امر باعث می شود عملکرد این کلاس در برخی موارد خیلی بهینه تر از string باشد.
اما چه موقع باید از string و چه موقع از stringbuilder استفاده کرد؟ جواب این سوال را میتوان با توجه به نحوه پیاده سازی این دو کلاس و تجربه کار کردن با آنها به دست آورد. اما مطالعه دو مقاله زیر می تواند خیلی مفید باشد:



همچنین اسناد مایکروسافت و بخصوص بخش با عنوان Performance Considerations در آدرس زیر:

 http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx