If you do not find what you're looking for, you can use more accurate words.
يمكن أداء التحسن الآلي عن طريق برامج الترجمة أو المبرمجين. عادة ما تكون مكاسب التحسينات المحلي محدودة وتكون المكاسب أكبر في التحسينات العالمية. عادة؛ يكون التحسين الأقوى هو إيجاد الحلول الحسابية الفائقة.
يتولى المبرمج عملية تحسين النظام الكامل لأنها معقدة جدًا بالنسبة للمُحسن الآلي. في هذه الحالة؛ يقوم المبرمجين أو المسؤولين عن النظام بتغيير الشفرة بوضوح لكي يعمل النظام بصورة أفضل. بالرغم من أنه يمكن إنتاج ذلك بكفاءة أفضل لكنها أغلى بكثير من التحسينات الآلية. بما أن العديد من المعاملات تؤثر على أداء البرنامج فإن مساحة تحسين البرنامج تكون أكبر. تُستخدم الاستدلالات المتغيرة والتعلم الآلي لمعالجة تعقيد تحسن البرنامج.
يعد استخدام المحلل (أو محلل الأداء) لإيجاد أقسام البرنامج التي تأخذ أكبر قدر من الموارد هو سبب المشكلة. يعتقد المبرمجين أحيانًا أنهم لديهم فكرة واضحة حول سبب المشكلة ؛ لكن بديهيًا كثيرًا ما يكون خطأ. لن يؤدي تحسين الأجزاء غير المهم لجزء الشفرة عادةً إلى المساعدة القليلة للبرنامج بأكمله.
عندما يتم تحديد سبب المشكلة يمكن أن يبدأ التحسين بإعادة التفكير في الحلول الحسابية المستخدمة في البرنامج. في بعض الأحيان؛ يمكن عمل الحلول الحسابية المعينة المصممة خصيصًا لمشكلة محددة والتي تقدم أداء أفضل من الحلول الحسابية العامة. على سبيل المثال؛ عادة ما تتم مهمة فرز قائمة كبيرة من العناصر بواسطة الفرز السريع المعتاد والذي يعد أحد الحلول الحسابية الأكثر كفاءة. لكن إذا كانت بعض خصائص العناصر قابلة للاستغلال (على سبيل المثال؛ أن تم ترتيبها بنظام معين) فيمكن استخدام طريقة أخرى أو حتى الفرز المعتاد حسب الطلب.
بعد أن يتأكد المبرمج بشكل معقول أنه تم اختيار أفضل الحلول الحسابية فيمكن البدء في تحسين الشفرة. يمكن أن تكون الحلقات مفتوحة (للحلقة السفلية في الأعلى، على الرغم من أنه يمكن أن يؤدي غالبًا إلى انخفاض السرعة بالرغم من أنه يزيد من سعة التخزين المؤقت لوحدة المعالجة المركزية) ويمكن استخدام أنواع البيانات الصغيرة قدر الإمكان كما يمكن استخدام الحلول الحسابية الصحيحة بدلا من النقاط الزائفة وغير ذلك.
يمكن أن يكون سبب المشكلة بسبب قيود اللغة بدلا من الحلول الحسابية أو هياكل البيانات المستخدمة في البرنامج. في بعض الأحيان؛ يمكن إعادة كتابة الجزء المهم من البرنامج بلغة برمجة مختلفة والتي تؤدي إلى الوصول المباشر للألة الأساسية. على سبيل المثال؛ إنه من الشائع في اللغات العالية جدا في المستوي مثل Python أن تحتوي على وحدات مكتوبة في C للحصول على سرعة أكبر. يمكن للبرامج المكتوبة بالفعل في C أن يكون لها وحدات مكتوبة في لغة التجميع. يمكن للبرامج المكتوبة في D استخدام المُجمع.
تُثمر أقسام إعادة الكتابة في هذه الظروف بسبب "الطريقة المجربة" العامة المعروفة بقانون 90/10 والذي ينص على أن 90% من الوقت يتم استغراقه في 10% من الشفرة و10% فقط من الوقت في 90% من الشفرة المتبقية. لذا فإن تركيز الجهد الفكري على تحسين جزء صغير من البرنامج يمكن أن يؤثر بصورة كبيرة على السرعة الكلية—إذا كان من الممكن تحديد الجزء (الأجزاء) الصحيحة.
يكون للتحسين اليدوي في بعض الأحيان أثار جانبية على إمكانية القراءة وبالتالي يجب أن تُوثق تحسينات الشفرة بعناية وتأثيرها على التطوير المستقبلي المُقَدر.
يسمي البرنامج الذي يقوم بالتحسين الآلي المُحسن. تُدمج المُحسنات مع المُحللات وتعمل أثناء التجميع. يمكن للمُحسنات غالبًا تصميم الشفرة التي تم إنشاؤها للمعالجات الخاصة.
اليوم؛ تقتصر التحسينات الآلية غالبًا على التحسين المُجمع وذلك بسبب أن التحسينات المُجمعة تقصر عادة على مجموعة ثابتة إلى حد ما من التحسينات العامة حيث يوجد طلب كبير على المُحسنات التي يمكنا قبول أوصاف المشكلة ولغة التحسينات المحددة والتي تسمح للمهندس بتعيين التحسينات المخصصة. تسمي الأدوات التي تقبل أوصاف التحسينات بأنظمة تحويل البرامج والتي بدأ تطبيقها في أنظمة البرمجيات الحقيقة مثل C++.
تُحسن بعض اللغات عالية المستوي (Eiffel، Esterel) برامجها باستخدام لغة وسيطة.
تهدف الحوسبة الشبكية أو الحوسبة الموزعة إلى تحسين النظام بأكمله، من خلال نقل المهام من أجهزة الكمبيوتر ذات الاستخدام العالي إلى أجهزة الكمبيوتر التي تعمل بوقت العطل.