PowerShell / المتقدم: البعيد والأمان والحالة المطلوبة والموثوقية / الدرس 18
قياس الأداء وصيانة العقود المحمولة
قلل غير اللازم مع حفظ الكائن والذاكرة المحدودة والنسخ والترميز والصحة والقياس الهادف.
في هذه الصفحة
أهداف الدرس
- تمييز التدفق والتخزين والتخصيص المتكرر.
- قياس عمل مفيد متكافئ دون تعميم.
- حفظ مصفوفة اختبار النسخة والوحدة والمنصة.
ينتمي الأداء لعقد التطبيق الكامل
حدد الإنجاز والكمون والصحة والخطأ والموارد والمدخل قبل الصياغة. لا يثبت القصر سرعة؛ تهيمن كلف مختلفة كالتسلسل والاستيراد. احفظ أساساً ممثلاً ولا تعد حذف التحقق مكافئاً. لا نقيس حملاً أو مضيفاً؛ حساباتنا نماذج معلنة. ويجب أن تبقى النتائج والأخطاء المطلوبة متكافئة، لأن تقليل حجم البيانات أو إسقاط التحقق قد يحسن الوقت ظاهرياً بينما يخرق عقد التطبيق.
لبناء المجموعة مقايضات حسب الحجم
قد تكرر إضافة المصفوفة التخصيص حسب البيئة، وقد تناسب مجموعة أو تدفق الحجم. لا تعمم فوز حلقة أو طريقة؛ تختلف الآليات بالكلفة والدلالة. اختر للحجم والقراءة والإلغاء والخرج واحم النجاح من قيمة طريقة، ولا تسم تغيير النوع والخطأ تحسيناً مكافئاً. وقد تعيد طريقة تجميع قيمة غير مقصودة إلى تيار النجاح، لذلك يحتاج تحسين التخصيص إلى اختبار الأنواع والخرج لا الزمن وحده.
قد يزيل الفرز والتجميع فائدة التدفق
قد يتدفق الأنبوب ويخزنه الفرز أو التجميع أو الإسناد. وثق الذاكرة وكمون الأول لا وصف كل | ثابت الذاكرة. رشح بالمصدر المدعوم مع المعنى والسلطة ولا تحلل العرض للسرعة الموهومة. احفظ العدد والترتيب واختر أداة أخرى للمعقد. وقد يجمع المستهلك كل ما أنتجته دالة تدريجية، فتعود الذاكرة متناسبة مع الحجم رغم أن جسم المنتج نفسه لا يحتفظ بقائمة.
إظهار مسار البيانات أثناء إعادة الكتابة
ينتج المثال لكل عنصر دون تجميع ولا يثبت الذاكرة أو الزمن. قد يعيد المستهلك التخزين، فلا تقارن الدالة وحدها. تنفذ Measure-Command الكتلة لا تحللها فحد أثر القياس اللاحق ومثبتاته وتكافؤه وإصداره. يبقى المثال غير منفذ. ويجب أن يصف القياس اللاحق بدء الوحدات والتحويل والمستهلك عندما تكون ضمن العملية، لا جزءاً منتقى يترك بقية الكلفة خارج التوقيت.
function Convert-LabValue {
[CmdletBinding()]
param([Parameter(ValueFromPipeline)][int]$Value)
process { [pscustomobject]@{ Input = $Value; Result = ($Value * 2) } }
}
1, 2, 3 | Convert-LabValue
المقصود تحويل مستقل دون قياس أداء أو ذاكرة أو ربط أو خرج المحرك.
دعم الإصدار والتكرار التزامان مستمران
احفظ النسخ والوحدات والأصلي والترميز والمحلية والمنصة بمصفوفة. ليست5.1 تصحيحاً لـ7.6 وقد يغير .NET السلوك دون المصدر. سجل الحمل وعدم اليقين وأعد التحقق، والحساب التالي تطبيع مصطنع لا تسارع أو ذيل. يحسن الضبط العقد بشروط ورجوع. وتبقى نتيجة القياس مشروطة بالنسخة والمنصة والحمل، لذلك ينبغي إعادة التحقق عند تغير ذي شأن لا الاحتفاظ بوصفة قديمة كتوصية عامة.
baseline_ms = 2400
candidate_ms = 2100
records = 100
print(f'synthetic_baseline={baseline_ms / records:.1f} ms/record')
print(f'synthetic_candidate={candidate_ms / records:.1f} ms/record')
print('runtime_speedup=not-measured')
synthetic_baseline=24.0 ms/record
synthetic_candidate=21.0 ms/record
runtime_speedup=not-measured
القيم تعليمية ولا تنفذ أو توقت أو تثبت صحة تنفيذ.
الأخطاء الشائعة وإصلاحها
اعتبار الأنبوب الأقصر أسرع دون قياس
- لماذا يحدث؟
- استبدل القصر الدليل.
- كيف تصلحه؟
- قارن المحدود الكامل والنتائج.
- كيف تتجنب تكراره؟
- افصل المثال والقياس.
تسمية فرز ثقيل تدفقاً ثابت الذاكرة
- لماذا يحدث؟
- أُهمل التخزين.
- كيف تصلحه؟
- افحص المراحل والمستهلك.
- كيف تتجنب تكراره؟
- وثق الحجم والأول.
كسر التحسين دعم النسخة أو الترميز
- لماذا يحدث؟
- استُبعد التوافق.
- كيف تصلحه؟
- أعد المصفوفة بنتائج دقيقة.
- كيف تتجنب تكراره؟
- عامل المنصة عقداً عاماً.
اختبر فهمك
1. لماذا قد تؤدي دالة تدريجية لذاكرة غير محدودة؟
اعرض الحل المشروح
قد يجمع اللاحق كل السجلات؛ راجع المسار الكامل لا غياب القائمة بالجسم.
2. ماذا يثبت24 مقابل21 مللي ثانية مصطنعة للسجل؟
اعرض الحل المشروح
يثبت القسمة فقط لا السرعة أو التكافؤ أو الذيل أو منصة أخرى؛ تحتاج أدلة تنفيذ متطابقة.
أهم ما تعلمته
- حسن العمل المقيس مع الدلالة الكاملة.
- تتبع التخزين واحفظ دليل التوافق.