الانتقال إلى المحتوى التحسينات
سجل تحديثات Go Optimizations 101
v1.24.a (2024/Dec/16)
- عُدّل فصل «إزالة فحص الحدود (Bound Check Elimination)» وفق سلسلة أدوات Go الإصدار go1.24rc1.
- في فصل «المكدس وتحليل الهروب (Stack and Escape Analysis)»، عُدّلت بعض العتبات وفق سلسلة أدوات Go الإصدار go1.24rc1.
v1.23.a (2024/Oct/16)
v1.22.a (2024/Mar/18)
- غيّرت Go 1.22 دلالات كتل شيفرة حلقات for. وقد عُدّلت المقالات ذات الصلة وفقاً لذلك.
v1.21.a (2023/OCT/11)
- في فصل «المكدس وتحليل الهروب»، أُشير إلى أن استدعاءات الدالة
reflect.ValueOf لن تخصّص دائماً القيم المشار إليها بمعطياتها ولن تُهربها.
- في قسم «حذف مدخلات الخريطة» (Clear map entries) من فصل «الخرائط» (Maps)، أُشير إلى أن Go 1.21 أضافت دالة مدمجة جديدة
clear.
v1.20.a (2023/Feb/01)
- في قسم «التصريف الضمني للدوال» (Function inlining) من فصل «الدوال» (Functions)، أُشير إلى أن احتواء الدالة على تعريفات أنواع لن يمنع تصريفها ضمنياً منذ سلسلة أدوات Go 1.20. وقد عُدّلت أمثلة كثيرة تستخدم تعريف النوع المحلي
type _ int وفقاً لذلك، بما فيها المثال الوارد في القسم الأخير «نمو المكدس بعدد أقل من المرات» (Grow stack in less times) من فصل «المكدس وتحليل الهروب».
- في فصل «المصفوفات والشرائح» (Arrays and Slices)، أُشير إلى أن
copy(s, s) عملية لا أثر لها (no-op)، لكن append(s[:0], s...) ليست كذلك.
- في فصل «إزالة فحص الحدود»، أُشير إلى أن
-gcflags="-d=ssa/check_bce" لا يعمل مع بعض الدوال العامة (generic functions).
v1.19 (2022/Aug/28)
- حُدّث فصل «جمع النفايات» (Garbage Collection) تحديثاً كبيراً. توجد محتويات التحديث أساساً في الأقسام الأربعة الأخيرة (بدءاً من قسم «استخدام استراتيجية النسبة المئوية الجديدة لذاكرة الكومة للتحكم في تكرار GC التلقائي» (Use new heap memory percentage strategy to control automatic GC frequency)). كما عُدّلت بعض الأوصاف في القسم الأول «منظّم GC» (GC pacer) قليلاً.
- في فصل «المكدس وتحليل الهروب»، عُدّلت الأوصاف المتعلقة بأحجام المكدس الأولية في قسم «نمو المكدس وتقلّصه» (Stacks growth and shrinkage).
- في فصل «إزالة فحص الحدود»، أُضيف قسم جديد «المثال 4» (Example 4). كان المثال موجوداً في قسم «أحياناً، يحتاج المصرِّف إلى بعض التلميحات لإزالة بعض فحوص الحدود» (Sometimes, the compiler needs some hints to remove some bound checks).
- في فصل «الدوال»، يذكر قسم «ما الدوال القابلة للتصريف الضمني؟» (Which functions are inline-able?) أن الدوال التي تحتوي كتل شيفرة
select قد تُصرَّف ضمنياً منذ سلسلة أدوات Go 1.19.
v1.17 (2021/Dec/22)