الكفاءة الخوارزمية
في علم الحاسوب ، تُعدّ الكفاءة الخوارزمية خاصيةً للخوارزمية تتعلق بكمية الموارد الحاسوبية التي تستخدمها. ويمكن تشبيه الكفاءة الخوارزمية بإنتاجية الهندسة في العمليات المتكررة أو المستمرة.
لتحقيق أقصى قدر من الكفاءة، يُفضّل تقليل استخدام الموارد. مع ذلك، لا يمكن مقارنة الموارد المختلفة، مثل تعقيد الوقت والمساحة ، بشكل مباشر، لذا فإن تحديد أي من الخوارزميتين أكثر كفاءة يعتمد غالبًا على معيار الكفاءة الأكثر أهمية.
على سبيل المثال، تُعدّ كل من خوارزمية فرز الدورة وخوارزمية فرز الوقت خوارزميتين لفرز قائمة من العناصر من الأصغر إلى الأكبر. تُنظّم خوارزمية فرز الدورة القائمة في وقت يتناسب مع مربع عدد العناصر ((انظر ترميز Big O )، ولكنه يقلل من عمليات الكتابة إلى المصفوفة الأصلية ولا يتطلب سوى مقدار صغير من الذاكرة الإضافية التي تكون ثابتة بالنسبة لطول القائمة (تقوم خوارزمية Timsort بترتيب القائمة في وقت خطي لوغاريتمي (يتناسب مع كمية مضروبة في لوغاريتمها) حسب طول القائمة.)، لكن متطلبات المساحة فيه خطية بالنسبة لطول القائمة (). إذا كان يجب فرز القوائم الكبيرة بسرعة عالية لتطبيق معين، فإن خوارزمية timsort هي الخيار الأفضل؛ ومع ذلك، إذا كان تقليل دورات البرنامج/المسح وبصمة الذاكرة للفرز أكثر أهمية، فإن خوارزمية cycle sort هي الخيار الأفضل.
خلفية
أكدت آدا لوفليس في عام 1843 على أهمية الكفاءة فيما يتعلق بالوقت، وذلك عند تطبيقها على المحرك التحليلي الميكانيكي لتشارلز باباج :
"في كل عملية حسابية تقريباً، توجد مجموعة متنوعة من الترتيبات الممكنة لتتابع العمليات، ويجب أن تؤثر اعتبارات مختلفة على الاختيارات من بينها لأغراض محرك الحساب. أحد الأهداف الأساسية هو اختيار الترتيب الذي من شأنه أن يقلل إلى الحد الأدنى من الوقت اللازم لإكمال الحساب" [ 1 ]
كانت الحواسيب الإلكترونية المبكرة محدودة السرعة وذاكرة الوصول العشوائي . ولذلك، كان لا بد من المفاضلة بين المساحة والوقت . إذ كان بالإمكان استخدام خوارزمية سريعة تستهلك ذاكرة كبيرة، أو خوارزمية بطيئة تستهلك ذاكرة صغيرة. ولذا، تمثلت المفاضلة الهندسية في استخدام أسرع خوارزمية تتناسب مع الذاكرة المتاحة.
تتميز الحواسيب الحديثة بسرعتها الفائقة مقارنةً بالحواسيب القديمة، كما أنها تتمتع بسعة ذاكرة أكبر بكثير ( جيجابايت بدلاً من كيلوبايت ). ومع ذلك، أكد دونالد كنوث على أن الكفاءة لا تزال عاملاً مهماً.
"في التخصصات الهندسية الراسخة، لا يعتبر التحسن بنسبة 12٪، والذي يمكن تحقيقه بسهولة، هامشيًا أبدًا، وأعتقد أن وجهة النظر نفسها يجب أن تسود في هندسة البرمجيات" [ 2 ].
في عصر الذكاء الاصطناعي ، في حين أن نماذج التعلم الآلي يمكن أن تولد رمزًا يعمل، إلا أن هذه النماذج غالبًا ما تقصر عن معايير الأداء المطلوبة في التطبيقات ذات الموارد المحدودة أو الحساسة للوقت [ 3 ] ، مما يجعل كفاءة الكود عنق زجاجة حاسمًا للنشر في العالم الحقيقي.
ملخص
تُعتبر الخوارزمية فعّالة إذا كان استهلاكها للموارد، المعروف أيضًا بالتكلفة الحسابية، عند مستوى مقبول أو أقل منه. وبشكل عام، يُقصد بـ"المقبول" أنها ستعمل في وقت أو مساحة معقولة على جهاز حاسوب متاح، وعادةً ما يكون ذلك مرتبطًا بحجم المدخلات. منذ خمسينيات القرن الماضي، شهدت أجهزة الحاسوب زيادات هائلة في كلٍ من القدرة الحسابية المتاحة وسعة الذاكرة، لذا فإن المستويات المقبولة الحالية كانت غير مقبولة حتى قبل عشر سنوات. في الواقع، بفضل تضاعف قدرة الحوسبة تقريبًا كل عامين ، فإن المهام التي تُعتبر فعّالة بشكل مقبول على الهواتف الذكية الحديثة والأنظمة المدمجة ربما كانت غير فعّالة بشكل غير مقبول على الخوادم الصناعية قبل عشر سنوات.
تُصدر شركات تصنيع الحواسيب باستمرار طرازات جديدة، غالباً ما تتميز بأداء أعلى . قد تكون تكاليف البرامج مرتفعة للغاية، لذا في بعض الحالات، قد يكون شراء حاسوب أسرع هو أبسط وأرخص طريقة للحصول على أداء أفضل، شريطة أن يكون متوافقاً مع الحاسوب الحالي.
تتعدد طرق قياس الموارد التي يستخدمها أي خوارزمية: وأكثرها شيوعًا السرعة واستخدام الذاكرة؛ وتشمل المقاييس الأخرى سرعة النقل، واستخدام القرص المؤقت، واستخدام القرص طويل الأمد، واستهلاك الطاقة، والتكلفة الإجمالية للملكية ، وزمن الاستجابة للمؤثرات الخارجية، وغيرها. يعتمد الكثير من هذه المقاييس على حجم مدخلات الخوارزمية، أي كمية البيانات المراد معالجتها. وقد يعتمد أيضًا على طريقة ترتيب البيانات؛ فعلى سبيل المثال، قد يكون أداء بعض خوارزميات الفرز ضعيفًا على البيانات المرتبة مسبقًا، أو المرتبة بترتيب عكسي.
عمليًا، توجد عوامل أخرى قد تؤثر على كفاءة الخوارزمية، مثل متطلبات الدقة و/أو الموثوقية. وكما هو موضح أدناه، فإن طريقة تنفيذ الخوارزمية قد يكون لها تأثير كبير على الكفاءة الفعلية، على الرغم من أن العديد من جوانب ذلك تتعلق بقضايا التحسين .
التحليل النظري
في التحليل النظري للخوارزميات ، تتمثل الممارسة المعتادة في تقدير تعقيدها بالمعنى التقاربي. وأكثر الرموز استخدامًا لوصف استهلاك الموارد أو "التعقيد" هو رمز Big O لدونالد كنوث ، الذي يمثل تعقيد الخوارزمية كدالة لحجم المدخلات.يُعدّ ترميز Big O مقياسًا تقاربيًا لتعقيد الدالة، حيثيعني ذلك تقريبًا أن الوقت اللازم لتنفيذ خوارزمية ما يتناسب معمع حذف الحدود ذات الرتبة الأدنى التي تساهم بأقل منلنمو الوظيفة كـينمو بشكل كبير بشكل تعسفي . قد يكون هذا التقدير مضللاً عندماصغير الحجم، ولكنه دقيق بشكل عام عندماتكون القيمة كبيرة لأن الترميز تقاربي. على سبيل المثال، قد يكون فرز الفقاعات أسرع من فرز الدمج عند فرز عدد قليل من العناصر؛ ومع ذلك، من المرجح أن يلبي أي من التنفيذين متطلبات الأداء لقائمة صغيرة. عادةً، يهتم المبرمجون بالخوارزميات التي تتوسع بكفاءة لأحجام إدخال كبيرة، ويُفضل فرز الدمج على فرز الفقاعات للقوائم ذات الطول الذي يُصادف في معظم البرامج كثيفة البيانات.
تتضمن بعض الأمثلة على استخدام ترميز Big O في حساب التعقيد الزمني التقاربي للخوارزميات ما يلي:
| الترميز | اسم | أمثلة |
|---|---|---|
| ثابت | إيجاد الوسيط من قائمة مرتبة من القياسات؛ استخدام جدول بحث ذي حجم ثابت ؛ استخدام دالة تجزئة مناسبة للبحث عن عنصر. | |
| اللوغاريتمي | إيجاد عنصر في مصفوفة مرتبة باستخدام البحث الثنائي أو شجرة البحث المتوازنة بالإضافة إلى جميع العمليات في كومة ذات الحدين . | |
| خطي | إيجاد عنصر في قائمة غير مرتبة أو شجرة مشوهة (أسوأ حالة) أو في مصفوفة غير مرتبة؛ جمع عددين صحيحين من n بت عن طريق الحمل المتتالي . | |
| خطي لوغاريتمي ، أو لوغاريتمي خطي، أو شبه خطي | إجراء تحويل فورييه السريع ؛ فرز الكومة ، أو الفرز السريع ( في أفضل حالة ومتوسطها )، أو فرز الدمج | |
| التربيعي | ضرب عددين مكونين من n خانة باستخدام خوارزمية بسيطة ؛ فرز الفقاعات (أسوأ حالة أو تطبيق بسيط)، فرز شل ، الفرز السريع ( أسوأ حالة )، فرز التحديد أو فرز الإدراج | |
| النمو الأسي | إيجاد الحل الأمثل (غير التقريبي ) لمسألة البائع المتجول باستخدام البرمجة الديناميكية ؛ وتحديد ما إذا كانت عبارتان منطقيتان متكافئتين باستخدام البحث الشامل. |
قياس الأداء
تُستخدم أحيانًا معايير الأداء عند تطوير إصدارات جديدة من البرامج أو لإجراء مقارنات مع الأنظمة المنافسة، حيث تساعد هذه المعايير في تقييم الأداء النسبي للخوارزميات. فعلى سبيل المثال، عند تطوير خوارزمية فرز جديدة ، يمكن مقارنتها بالخوارزميات السابقة للتأكد من أنها على الأقل بنفس كفاءتها السابقة مع البيانات المعروفة، مع الأخذ في الاعتبار أي تحسينات وظيفية. كما يمكن للعملاء استخدام معايير الأداء عند مقارنة منتجات مختلفة من موردين بديلين لتقدير المنتج الأنسب لمتطلباتهم المحددة من حيث الوظائف والأداء. فعلى سبيل المثال، في مجال الحواسيب المركزية، تتنافس بعض منتجات الفرز الاحتكارية من شركات برمجيات مستقلة مثل Syncsort مع منتجات من موردين رئيسيين مثل IBM من حيث السرعة.
توفر بعض المعايير فرصًا لإجراء تحليل يقارن السرعة النسبية للغات المترجمة والمفسرة المختلفة على سبيل المثال [ 4 ] [ 5 ] وتقارن لعبة معايير لغة الكمبيوتر أداء تطبيقات مشاكل البرمجة النموذجية في العديد من لغات البرمجة.
حتى إنشاء معايير قياس الأداء " التي يمكنك القيام بها بنفسك " يمكن أن يُظهر الأداء النسبي للغات البرمجة المختلفة، باستخدام مجموعة متنوعة من المعايير التي يحددها المستخدم. وهذا أمر بسيط للغاية، كما يُوضح مثال "ملخص أداء تسع لغات" لكريستوفر دبليو كويل شاه. [ 6 ]
مخاوف التنفيذ
قد تؤثر مشكلات التنفيذ أيضًا على الكفاءة، مثل اختيار لغة البرمجة، أو طريقة كتابة الخوارزمية، [ 7 ] أو اختيار مُصرّف للغة معينة، أو خيارات التجميع المستخدمة، أو حتى نظام التشغيل . في كثير من الحالات، قد تكون اللغة المُنفذة بواسطة مُفسّر أبطأ بكثير من اللغة المُنفذة بواسطة مُصرّف. [ 4 ] انظر المقالات حول التجميع الفوري واللغات المُفسّرة .
هناك عوامل أخرى قد تؤثر على مشاكل الوقت أو المساحة، ولكنها قد تكون خارجة عن سيطرة المبرمج؛ وتشمل هذه العوامل محاذاة البيانات ، ودقة البيانات ، وموقع التخزين المؤقت ، وتماسك التخزين المؤقت ، وجمع البيانات المهملة ، والتوازي على مستوى التعليمات ، والمعالجة المتعددة (سواء على مستوى الأجهزة أو البرامج)، والمهام المتعددة المتزامنة ، واستدعاءات الإجراءات الفرعية . [ 8 ]
تتمتع بعض المعالجات بقدرات معالجة متجهة ، مما يسمح بتضمين تعليمات واحدة في عدة معاملات ؛ وقد يكون استخدام هذه القدرات سهلاً أو صعباً بالنسبة للمبرمج أو المترجم. قد تحتاج الخوارزميات المصممة للمعالجة التسلسلية إلى إعادة تصميم كاملة للاستفادة من المعالجة المتوازية ، أو يمكن إعادة تهيئتها بسهولة. ومع تزايد أهمية الحوسبة المتوازية والموزعة في أواخر العقد الثاني من الألفية، ازدادت الاستثمارات في واجهات برمجة التطبيقات عالية المستوى والفعالة لأنظمة الحوسبة المتوازية والموزعة، مثل CUDA و TensorFlow و Hadoop و OpenMP و MPI .
من المشاكل الأخرى التي قد تظهر في البرمجة أن المعالجات المتوافقة مع نفس مجموعة التعليمات (مثل x86-64 أو ARM ) قد تُنفذ التعليمات بطرق مختلفة، ما يجعل التعليمات السريعة نسبيًا على بعض النماذج بطيئة نسبيًا على نماذج أخرى. يُشكل هذا تحديًا للمُترجمات المُحسّنة ، التي يجب أن تمتلك معرفة واسعة بوحدة المعالجة المركزية (CPU) المحددة والمكونات المادية الأخرى المتاحة على منصة الترجمة لتحسين أداء البرنامج على النحو الأمثل. في الحالات القصوى، قد يُضطر المُترجم إلى محاكاة تعليمات غير مدعومة على منصة الترجمة، ما يُجبره على توليد شيفرة أو ربط استدعاء مكتبة خارجية لإنتاج نتيجة غير قابلة للحساب على تلك المنصة، حتى لو كانت مدعومة أصلاً وأكثر كفاءة على منصات أخرى. هذا شائع في الأنظمة المُدمجة فيما يتعلق بحسابات الفاصلة العائمة ، حيث تفتقر وحدات التحكم الدقيقة الصغيرة ومنخفضة الطاقة غالبًا إلى دعم الأجهزة لحسابات الفاصلة العائمة، وبالتالي تتطلب إجراءات برمجية مُكلفة حسابيًا لإجراء هذه الحسابات.
مقاييس استخدام الموارد
تُعبّر المقاييس عادةً عن نفسها كدالة لحجم المدخلات..
الإجراءان الأكثر شيوعاً هما:
- الوقت : كم من الوقت تستغرقه الخوارزمية لإكمالها؟
- المساحة : ما مقدار ذاكرة العمل (عادةً ذاكرة الوصول العشوائي) التي تحتاجها الخوارزمية؟ وهذا له جانبان: مقدار الذاكرة التي يحتاجها الكود (استخدام المساحة المساعدة)، ومقدار الذاكرة اللازمة للبيانات التي يعمل عليها الكود (استخدام المساحة الجوهرية).
بالنسبة لأجهزة الكمبيوتر التي يتم تزويدها بالطاقة بواسطة بطارية (مثل أجهزة الكمبيوتر المحمولة والهواتف الذكية )، أو لإجراء حسابات طويلة/كبيرة جدًا (مثل أجهزة الكمبيوتر العملاقة )، فإن المقاييس الأخرى ذات الأهمية هي:
- استهلاك الطاقة المباشر : الطاقة اللازمة لتشغيل الكمبيوتر بشكل مباشر.
- استهلاك الطاقة غير المباشر : الطاقة اللازمة للتبريد والإضاءة وما إلى ذلك.
اعتبارًا من عام 2018يتزايد استهلاك الطاقة كمقياس مهم للمهام الحسابية بجميع أنواعها وعلى جميع المستويات، بدءًا من أجهزة إنترنت الأشياء المدمجة وصولًا إلى أنظمة على شريحة واحدة ومزارع الخوادم . ويُشار إلى هذا التوجه غالبًا باسم الحوسبة الخضراء .
قد تكون مقاييس الكفاءة الحسابية الأقل شيوعًا ذات صلة في بعض الحالات:
- حجم الإرسال : قد يُمثل عرض النطاق الترددي عاملاً مُحدداً. يُمكن استخدام ضغط البيانات لتقليل حجم البيانات المُرسلة. على سبيل المثال، قد يؤدي عرض صورة (مثل شعار جوجل ) إلى إرسال عشرات الآلاف من البايتات (48 كيلوبايت في هذه الحالة) مقارنةً بإرسال ستة بايتات فقط لنص "جوجل". يُعد هذا الأمر بالغ الأهمية لمهام الحوسبة التي تعتمد على عمليات الإدخال والإخراج .
- المساحة الخارجية : المساحة المطلوبة على القرص أو جهاز ذاكرة خارجي آخر؛ يمكن أن يكون ذلك للتخزين المؤقت أثناء تنفيذ الخوارزمية، أو يمكن أن يكون تخزينًا طويل الأجل مطلوبًا لنقله للرجوع إليه في المستقبل.
- زمن الاستجابة ( زمن الكمون ): هذا الأمر ذو أهمية خاصة في التطبيقات التي تعمل في الوقت الحقيقي عندما يتعين على نظام الكمبيوتر الاستجابة بسرعة لبعض الأحداث الخارجية .
- التكلفة الإجمالية للملكية : خاصة إذا كان جهاز الكمبيوتر مخصصًا لخوارزمية معينة.
وقت
نظرية
يُمكن استخدام تحليل الخوارزميات ، عادةً باستخدام مفاهيم مثل التعقيد الزمني ، للحصول على تقدير لوقت التشغيل كدالة لحجم بيانات الإدخال. تُعبّر النتيجة عادةً باستخدام ترميز Big O. يُفيد هذا في مقارنة الخوارزميات، خاصةً عند معالجة كميات كبيرة من البيانات. هناك حاجة إلى تقديرات أكثر تفصيلًا لمقارنة أداء الخوارزميات عندما تكون كمية البيانات صغيرة، على الرغم من أن هذا الأمر أقل أهمية على الأرجح. قد يكون تحليل الخوارزميات المتوازية أكثر صعوبة .
يمارس
يمكن استخدام معيار قياس الأداء لتقييم أداء الخوارزمية عمليًا. توفر العديد من لغات البرمجة دالة توفر معلومات عن استخدام وقت وحدة المعالجة المركزية . بالنسبة للخوارزميات طويلة الأمد، قد يكون الوقت المنقضي ذا أهمية أيضًا. يُنصح عمومًا بحساب متوسط النتائج على عدة اختبارات.
يمكن أن يكون تحليل الأداء القائم على التشغيل حساسًا للغاية لتكوين الأجهزة وإمكانية تشغيل برامج أو مهام أخرى في نفس الوقت في بيئة متعددة المعالجة والبرمجة .
يعتمد هذا النوع من الاختبارات بشكل كبير على اختيار لغة برمجة معينة، ومترجم، وخيارات المترجم، لذلك يجب تنفيذ جميع الخوارزميات التي تتم مقارنتها في ظل نفس الظروف.
فضاء
يتناول هذا القسم استخدام موارد الذاكرة ( السجلات ، والذاكرة المخبئية ، وذاكرة الوصول العشوائي ، والذاكرة الافتراضية ، والذاكرة الثانوية ) أثناء تنفيذ الخوارزمية. وكما هو الحال في تحليل الوقت المذكور أعلاه، يتم تحليل الخوارزمية، عادةً باستخدام تحليل تعقيد المساحة ، للحصول على تقدير لحجم الذاكرة اللازمة أثناء التشغيل كدالة لحجم بيانات الإدخال. وعادةً ما تُعبّر النتيجة باستخدام ترميز Big O.
هناك ما يصل إلى أربعة جوانب لاستخدام الذاكرة يجب مراعاتها:
- مقدار الذاكرة اللازمة لتخزين رمز الخوارزمية.
- مقدار الذاكرة اللازمة لبيانات الإدخال .
- مقدار الذاكرة اللازمة لأي بيانات إخراج .
- تقوم بعض الخوارزميات، مثل خوارزمية الفرز، بإعادة ترتيب بيانات الإدخال في كثير من الأحيان ، ولا تحتاج إلى مساحة إضافية لبيانات الإخراج. وتُعرف هذه الخاصية باسم عملية " الترتيب في المكان ".
- مقدار الذاكرة المطلوبة كمساحة عمل أثناء الحساب.
- يشمل ذلك المتغيرات المحلية وأي مساحة مكدس تحتاجها الإجراءات التي يتم استدعاؤها أثناء الحساب؛ يمكن أن تكون مساحة المكدس هذه كبيرة بالنسبة للخوارزميات التي تستخدم تقنيات تكرارية .
كانت الحواسيب الإلكترونية المبكرة، والحواسيب المنزلية المبكرة، تمتلك ذاكرة عاملة صغيرة نسبيًا. فعلى سبيل المثال، احتوت آلة الحاسبة الإلكترونية ذات التخزين المؤجل (EDSAC) لعام 1949 على ذاكرة عاملة قصوى تبلغ 1024 كلمة من 17 بت، بينما جاء جهاز سينكلير ZX80 لعام 1980 مزودًا في البداية بذاكرة عاملة تبلغ 1024 بايت من 8 بت. وفي أواخر العقد الثاني من القرن الحادي والعشرين، أصبح من الشائع أن تحتوي الحواسيب الشخصية على ذاكرة وصول عشوائي (RAM) تتراوح سعتها بين 4 و32 جيجابايت ، أي بزيادة تتجاوز 300 مليون ضعف.
التخزين المؤقت والتسلسل الهرمي للذاكرة
تتمتع الحواسيب الحديثة بسعات ذاكرة كبيرة نسبيًا (قد تصل إلى غيغابايت)، لذا لم يعد ضغط الخوارزمية في مساحة ذاكرة محدودة يمثل مشكلة كما كان في السابق. ومع ذلك، فإن أنواع الذاكرة المختلفة وسرعات الوصول إليها النسبية قد تكون ذات أهمية كبيرة.
- تُعدّ سجلات المعالج أسرع أنواع الذاكرة وأقلها حجمًا. تجري معظم العمليات الحسابية المباشرة على الحواسيب الحديثة باستخدام معاملات المصدر والوجهة في السجلات قبل تحديثها إلى ذاكرة التخزين المؤقت والذاكرة الرئيسية والذاكرة الافتراضية عند الحاجة. في نواة المعالج ، يتوفر عادةً مئات البايتات أو أقل من السجلات، مع العلم أن ملف السجلات قد يحتوي على سجلات فعلية أكثر من السجلات المعمارية المحددة في بنية مجموعة التعليمات.
- تُعدّ ذاكرة التخزين المؤقت ثاني أسرع أنواع الذاكرة وأصغرها حجمًا في التسلسل الهرمي للذاكرة. توجد هذه الذاكرة في المعالجات، مثل وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU)، حيث تُنفّذ عادةً في ذاكرة الوصول العشوائي الثابتة (SRAM )، مع إمكانية وجودها أيضًا في الأجهزة الطرفية مثل محركات الأقراص. غالبًا ما تمتلك ذاكرة التخزين المؤقت للمعالج تسلسلًا هرميًا متعدد المستويات ؛ حيث تكون المستويات الأدنى أكبر حجمًا وأبطأ، وعادةً ما تُشارك بين أنوية المعالج في المعالجات متعددة النوى . لمعالجة المعاملات في ذاكرة التخزين المؤقت، يجب على وحدة المعالجة جلب البيانات من الذاكرة، وإجراء العملية في المسجلات، ثم كتابة البيانات مرة أخرى إلى الذاكرة. تتم هذه العملية بسرعات مماثلة (أبطأ بحوالي 2-10 مرات) لسرعة وحدة الحساب والمنطق أو وحدة الفاصلة العائمة في وحدة المعالجة المركزية أو وحدة معالجة الرسومات إذا كانت في ذاكرة التخزين المؤقت من المستوى الأول (L1) . [ 9 ] يكون أبطأ بحوالي 10 مرات إذا كان هناك خطأ في ذاكرة التخزين المؤقت L1 ويجب استرداده من ذاكرة التخزين المؤقت L2 وكتابته إليها ، ويكون أبطأ بـ 10 مرات أخرى إذا كان هناك خطأ في ذاكرة التخزين المؤقت L2 ويجب استرداده من ذاكرة التخزين المؤقت L3 ، إن وجدت.
- تُنفذ الذاكرة الفيزيائية الرئيسية في أغلب الأحيان باستخدام ذاكرة الوصول العشوائي الديناميكية (DRAM). وتكون الذاكرة الرئيسية أكبر بكثير (عادةً بالجيجابايت مقارنةً بـ 8 ميجابايت تقريبًا ) من ذاكرة التخزين المؤقت L3 لوحدة المعالجة المركزية، مع زمن استجابة للقراءة والكتابة أبطأ عادةً من 10 إلى 100 مرة. [ 9 ] اعتبارًا من عام 2018، يتم تنفيذ ذاكرة الوصول العشوائي (RAM) بشكل متزايد على شريحة المعالجات، كذاكرة وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU ).
- الذاكرة المُصفحة ، التي تُستخدم غالبًا لإدارة الذاكرة الافتراضية ، هي ذاكرة مُخزنة في وحدة تخزين ثانوية مثل القرص الصلب ، وهي امتداد لهيكل الذاكرة يسمح باستخدام مساحة تخزين أكبر، ولكن على حساب زمن استجابة أعلى بكثير، عادةً ما يكون أبطأ بحوالي 1000 مرة من خطأ ذاكرة التخزين المؤقت لقيمة في ذاكرة الوصول العشوائي (RAM). [ 9 ] في حين أن الدافع الأصلي وراء استخدامها كان خلق انطباع بتوفر كميات أكبر من الذاكرة مما هي عليه في الواقع، إلا أن الذاكرة الافتراضية أكثر أهمية في الاستخدام المعاصر نظرًا لمفاضلتها بين الوقت والمساحة ، وتمكينها من استخدام الآلات الافتراضية . [ 9 ] يُطلق على أخطاء ذاكرة التخزين المؤقت من الذاكرة الرئيسية اسم أخطاء الصفحات ، وتُسبب خسائر فادحة في أداء البرامج.
الخوارزمية التي تتناسب احتياجاتها من الذاكرة مع ذاكرة التخزين المؤقت (الكاش) ستكون أسرع بكثير من الخوارزمية التي تتناسب مع الذاكرة الرئيسية، والتي بدورها ستكون أسرع بكثير من الخوارزمية التي تضطر إلى اللجوء إلى الترحيل. لهذا السبب، تُعد سياسات استبدال ذاكرة التخزين المؤقت بالغة الأهمية للحوسبة عالية الأداء، وكذلك البرمجة المُراعية لذاكرة التخزين المؤقت ومحاذاة البيانات . ومما يزيد الأمر تعقيدًا، أن بعض الأنظمة تحتوي على ما يصل إلى ثلاثة مستويات من ذاكرة التخزين المؤقت، بسرعات فعالة متفاوتة. وتختلف الأنظمة المختلفة في كميات هذه الأنواع المختلفة من الذاكرة، لذا فإن تأثير احتياجات الخوارزمية من الذاكرة قد يختلف اختلافًا كبيرًا من نظام لآخر.
في بدايات الحوسبة الإلكترونية، إذا لم تتسع الذاكرة الرئيسية للخوارزمية وبياناتها، لم يكن بالإمكان استخدامها. أما اليوم، فيبدو أن استخدام الذاكرة الافتراضية يوفر مساحة أكبر بكثير، ولكن على حساب الأداء. ويمكن الحصول على سرعة أعلى بكثير إذا كانت الخوارزمية وبياناتها تتسع في ذاكرة التخزين المؤقت؛ وفي هذه الحالة، يُسهم تقليل المساحة في تقليل الوقت أيضًا. يُعرف هذا بمبدأ الموضعية ، ويمكن تقسيمه إلى موضعية المرجع ، والموضعية المكانية ، والموضعية الزمنية . قد تُحقق الخوارزمية التي لا تتسع تمامًا في ذاكرة التخزين المؤقت، ولكنها تُظهر موضعية المرجع، أداءً جيدًا نسبيًا.
انظر أيضاً
- تحليل الخوارزميات - كيفية تحديد الموارد التي تحتاجها الخوارزمية.
- المعيار المرجعي — طريقة لقياس وقت التنفيذ والمساحة المستخدمة في حالات محددة. [ 10 ] [ 11 ] [ 12 ]
- أفضل الحالات وأسوأها ومتوسطها - اعتبارات لتقدير أوقات التنفيذ في ثلاثة سيناريوهات.
- تحسين المُترجم — التحسين المُستمد من المُترجم.
- نظرية التعقيد الحسابي
- أداء الحاسوب — مقاييس أجهزة الحاسوب.
- علم الخوارزميات التجريبي - ممارسة استخدام الأساليب التجريبية لدراسة سلوك الخوارزميات.
- مخطط الخوارزميات
- تحسين البرنامج
- تحليل الأداء - طرق قياس الأداء الفعلي للخوارزمية في وقت التشغيل.
مراجع
- ↑ غرين، كريستوفر، كلاسيكيات في تاريخ علم النفس ، تم الاطلاع عليه في 19 مايو 2013
- ↑ كنوت، دونالد (1974)، "البرمجة الهيكلية باستخدام عبارات الانتقال" (ملف PDF) ، مجلة Computing Surveys ، 6 (4): 261-301 ، CiteSeerX 10.1.1.103.6084 ، doi : 10.1145/356635.356640 ، S2CID 207630080 ، مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 24 أغسطس 2009 ، تم استرجاعه بتاريخ 19 مايو 2013
- ^ دو، مينجزي؛ توان، لو آنه؛ ليو، يو؛ تشينغ، يوهاو؛ هوانغ، دونغ؛ هو شينيى. ليو، تشيان. ما، زيجون؛ Ng، See-kiong (3 يونيو 2025)، Afterburner: التعلم المعزز يسهل التحسين الذاتي لتحسين كفاءة الكود ، أرخايف : 2505.23387
- 1 2 "معيار أداء الفاصلة العائمة: مقارنة اللغات (فورميلوج: لا أحد يجرؤ على تسميتها عقلانية)" . Fourmilab.ch. 4 أغسطس 2005. تم الاطلاع عليه في 14 ديسمبر 2011 .
- ↑ "تاريخ معايير الشحذ" . Roylongbottom.org.uk . تم الاطلاع عليه بتاريخ 14 ديسمبر 2011 .
- ↑ فريق عمل OSNews. "ملخص أداء تسع لغات: قياس أداء العمليات الحسابية وإدخال/إخراج الملفات" . osnews.com . تاريخ الاسترجاع: 18 سبتمبر 2018 .
- ↑ كريغل، هانز-بيتر ؛ شوبرت، إريك؛ زيمك، آرثر (2016). "فن (الأسود) لتقييم وقت التشغيل: هل نقارن الخوارزميات أم التطبيقات؟". نظم المعرفة والمعلومات . 52 (2): 341-378 . doi : 10.1007/s10115-016-1004-2 . ISSN 0219-1377 . S2CID 40772241 .
- ↑ غاي لويس ستيل الابن. "دحض أسطورة 'استدعاء الإجراء المكلف'، أو، اعتبار تطبيقات استدعاء الإجراء ضارة، أو، لامدا: أفضل طريقة للوصول إلى". مختبر الذكاء الاصطناعي بمعهد ماساتشوستس للتكنولوجيا. مذكرة مختبر الذكاء الاصطناعي AIM-443. أكتوبر 1977.
- ١ ٢ ٣ ٤ هينيسي، جون ل؛ باترسون، ديفيد أ؛ أسانوفيتش، كرست ؛ باكوس، جيسون د؛ كولول، روبرت ب؛ بهاتاشارجي، أبهيشيك؛ كونتي، توماس م؛ دواتو، خوسيه؛ فرانكلين، ديانا؛ غولدبيرغ، ديفيد؛ جوبي، نورمان ب ؛ لي، شينغ؛ موراليمانوهار، نافين؛ بيترسون، غريغوري د؛ بينكستون، تيموثي مارك؛ رانغاناثان، براكاش؛ وود، ديفيد ألين؛ يونغ، كليفورد؛ زاكي، عمرو (٢٠١١). هندسة الحاسوب: منهج كمي (الطبعة السادسة ). إلسيفير ساينس. ISBN 978-0128119051. OCLC 983459758 .
- ^ دو، مينجزي؛ لو، آنه توان؛ جي بن. ليو، تشيان. Ng، See-Kiong (11 يونيو 2024)، ميركوري: معيار كفاءة الكود لنماذج اللغات الكبيرة ، أرخايف : 2402.07844
- ^ تشينغ، يوهاو؛ تشو، بويو؛ دو، مينغزي؛ قوه، تشجيانغ؛ تشو، تيري يو؛ تشانغ، تشيانرو؛ تشانغ، جي م. كوي، هيمينغ؛ Yiu, Siu-Ming (19 مايو 2025)، EffiBench-X: معيار متعدد اللغات لقياس كفاءة الكود الناتج عن LLM ، أرخايف : 2505.13004
- ^ هوانغ دونغ. تشينغ، يوهاو؛ شانغ، ويي. كوي، هيمينغ؛ Zhang، Jie M. (10 مايو 2025)، EffiBench: قياس كفاءة التعليمات البرمجية التي تم إنشاؤها تلقائيًا ، أرخايف : 2402.02037
- تحليل الخوارزميات
- أداء الحاسوب
- تحسين البرمجيات
- جودة البرمجيات
