في علم الحاسوب، التكاليف غير المباشرة هي أي مزيج من وقت الحساب الزائد أو غير المباشر، أو الذاكرة، أو عرض النطاق الترددي، أو الموارد الأخرى المطلوبة لأداء مهمة معينة. إنها حالة خاصة من النفقات العامة الهندسية. يمكن أن تكون التكاليف غير المباشرة عاملاً حاسماً في تصميم البرمجيات، فيما يتعلق بالبنية وتصحيح الأخطاء وإدراج الميزة. يمكن العثور على أمثلة للحوسبة العامة في البرمجة الوظيفية، ونقل البيانات، وهياكل البيانات.
تصميم البرمجيات
اختيار التنفيذ
قد يكون لدى المبرمج أو المهندس برامج اختيار العديد من الخوارزميات أو الترميزات أو أنواع البيانات أو هياكل البيانات، ولكل منها خصائص معروفة. عند الاختيار من بينها، يجب أيضًا مراعاة التكاليف غير المباشرة الخاصة بها.
مقايضات
في هندسة البرمجيات، يمكن أن تؤثر التكاليف غير المباشرة على القرار بشأن تضمين الميزات في المنتجات الجديدة أم لا، أو في الواقع ما إذا كان سيتم إصلاح الأخطاء. قد لا يتم تضمين ميزة ذات تكاليف غير مباشرة مرتفعة - أو تحتاج إلى حافز مالي كبير للقيام بذلك. في كثير من الأحيان، على الرغم من أن موفري البرامج على دراية جيدة بالأخطاء في منتجاتهم، فإن مكافأة إصلاحها لا تستحق المكافأة، بسبب التكاليف غير المباشرة.
على سبيل المثال، قد توفر بنية بيانات ضمنية أو بنية المعطيات الوجيزة مساحة منخفضة منخفضة، ولكن على حساب الأداء البطيء (مقايضة المكان / الوقت).
تعقيد وقت تشغيل البرنامج
يتم تحديد التعقيد الخوارزمي بشكل عام باستخدام تمثيل O الكبرى. هذا لا يعلق على الوقت الذي يستغرقه تشغيل شيء ما أو مقدار الذاكرة التي يستخدمها، ولكن يعتمد مدى زيادتها على حجم الإدخال. العموم ليس عمدًا جزء من هذا الحساب، لأنه يختلف من آلة إلى أخرى، في حين أن وقت التشغيل الأساسي للخوارزمية لا.
يجب أن يتناقض هذا مع الكفاءة الخوارزمية، التي تأخذ في الاعتبار جميع أنواع الموارد - مجموعة (وإن لم تكن تافهة) من التعقيد والنفقات العامة.
أمثلة
برمجة الحاسوب (وقت التشغيل والتكاليف غير المباشرة)
يؤدي استدعاء دالة إلى تقديم تكاليف غير مباشرة وقت تشغيل صغير. في بعض الأحيان يمكن للمترجم تقليل هذه التكاليف عن طريق تضمين بعض هذه الاستدعاءات الوظيفية.
مخابئ وحدة المعالجة المركزية
في الذاكرة المخبئية لوحدة المعالجة المركزية، يشير «حجم ذاكرة التخزين المؤقت» (أو السعة) إلى مقدار البيانات التي تخزنها ذاكرة التخزين المؤقت. على سبيل المثال، «ذاكرة التخزين المؤقت 4KB» هي ذاكرة تخزين مؤقت تحتوي على 4KB من البيانات. يستبعد "4KB" في هذا المثال البتات العلوية مثل معلومات الإطارات والعناوين والعلامات.[1]
اتصالات (تكاليف غير مباشرة لنقل البيانات)
يتطلب إرسال تكاليف بيانات بشكل موثوق عبر شبكة اتصالات إرسال أكثر من مجرد حمولة نفسها. كما يتضمن إرسال العديد من بيانات التحكم والتشوير (بروتوكول التحم بالنقل) المطلوبة للوصول إلى الوجهة. يؤدي هذا إلى إنشاء ما يسمى بالنفقات العامة للبروتوكول حيث لا تسهم البيانات الإضافية في المعنى الحقيقي للرسالة.[2][3]
في التهاتف، يعد الاتصال بالأرقام ووقت إعداد المكالمات نفقات عامة. في أجهزة الراديو ثنائية الاتجاه (ولكن نصف الازدواج)، يكون استخدام التكاليف غير المباشرة وغيرها من الإشارات اللازمة لتجنب الوصول المتعدد باستشعار الحامل مع كشف الاصطدام أمرًا عامًا. يمكن التعبير عن حمل البروتوكول كنسبة مئوية من وحدات بايت غير التطبيق (مزامنة البروتوكول والإطار) مقسومة على إجمالي عدد وحدات البايت في الرسالة.
ترميزات وهياكل البيانات (حجم التكاليف غير المباشرة)
إن ترميز المعلومات والبيانات يقدم أيضًا النفقات العامة. يمكن التعبير عن التاريخ والوقت "2011-07-12 07:18:47" كتوقيت يونكس باستخدام العدد الصحيح الموقّع 32 بت1310447927
، الذي يستهلك 4 بايت فقط. ممثلة بتنسيق ايزو8601 بتنسيق صيغة التحويل الموحد-8 المشفر 2011-07-12 07:18:47
سوف يستهلك التاريخ 19 بايت، أي حجم علوي يزيد عن 375% على تمثيل عدد صحيح ثنائي. يمكن كتابة هذا التاريخ بصيغة لغة الترميز القابلة للامتداد (XML) على النحو التالي مع زيادة مقدارها 218 حرفًا، مع إضافة السياق الدلالي إلى أنه تغيير مع الفهرس 1.
<?xml version="1.0" encoding="UTF-8"?>
<DATETIME qualifier="CHANGEDATE" index="1">
<YEAR>2011</YEAR>
<MONTH>07</MONTH>
<DAY>12</DAY>
<HOUR>07</HOUR>
<MINUTE>18</MINUTE>
<SECOND>47</SECOND>
</DATETIME>
ترتبط البايتات 349، الناتجة عن لغة الترميز القابلة للامتداد (XML) المشفر لـصيغة التحويل الموحد-8 (UTF-8)، بحجم زائد 8625% عن التمثيل الصحيح الأصلي.
انظر أيضًا
مراجع