من یه قانونی برای خودم گذاشتم که هرجا قراره از کلمه کلیدی new استفاده کنم بررسی میکنم که آیا راه بهینه تری وجود داره ؟
اگر امکانش باشه از stackalloc استفاده میکنم. اگر نباشه میبینم آیا میشه متغیر رو یکبار به عنوان یک private member تعریف کرد و دیگه هر بار داخل یک تابع new نکرد.
سعی میکنم اگر از List استفاه میکنم، هنگام ساختش یه عددی که فکر میکنم مناسبه به عنوان capacity به constructor بدم تا وقتی Add میکنم لازم نباشه آرایه درونی منتقل بشه به یک آرایه بزرگتر.
سعی میکنم اگر امکانش هست به جای Class از struct استفاده کنم تا دیتا رو نگه داری کنم.
برای ساخت string از concat کردن string ها خود داری میکنم و از StringBuilder استفاده میکنم.
از for تا جای ممکن به جای foreach استفاده میکنم.
در حلقهها و جاهایی که تکرار زیاده از Linq استفاده نمیکنم.
همه اینها باعث میشه Garbage کمتر تولید بشه و در نتیجه نیاز به Garbage Collection کمتر.