"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل تأتي المؤشرات الذكية في لغة C++ مع ذاكرة كبيرة ووقت طويل؟

هل تأتي المؤشرات الذكية في لغة C++ مع ذاكرة كبيرة ووقت طويل؟

تم النشر بتاريخ 2024-11-13
تصفح:742

Do Smart Pointers in C   Come with a Significant Memory and Time Overhead?

الذاكرة والوقت الزائد للمؤشرات الذكية في C

المؤشرات الذكية، مثل std::shared_ptr وstd::unique_ptr في C 11، توفير إدارة تلقائية للذاكرة وتبسيط دلالات الملكية. ومع ذلك، قد يتساءل بعض المطورين عن التأثير المحتمل على الأداء لاستخدام المؤشرات الذكية مقارنة بالمؤشرات التقليدية.

الذاكرة الزائدة:

std::unique_ptr يفرض حمل الذاكرة فقط إذا يتم توفير أداة حذف غير تافهة. ومع ذلك، يتطلب std::shared_ptr دائمًا ذاكرة إضافية للعداد المرجعي، وإن كانت كمية صغيرة نسبيًا.

الوقت الزائد:

std::unique_ptr يتحمل الوقت الزائد أثناء البناء إذا كان المحذوف المقدم يحتاج إلى النسخ أو تهيئة المؤشر على أنه فارغ، وأثناء التدمير لتدمير المملوك object.

std::shared_ptr يواجه وقتًا إضافيًا بشكل أساسي أثناء الإنشاء لإنشاء العداد المرجعي، أثناء التدمير لتقليل العداد المرجعي وربما تدمير الكائن، وأثناء التعيين لزيادة العداد المرجعي. بالإضافة إلى ذلك، فإن هذه الزيادات/التخفيضات تعتبر ذرية بالنسبة لسلامة الخيط، مما يساهم بشكل أكبر في الحمل.

التأثير على الأداء:

من المهم ملاحظة أنه لا يوجد أي من العناصر الذكية تحتوي المؤشرات على وقت إضافي أثناء إلغاء المرجعية، والتي عادةً ما تكون العملية الأكثر شيوعًا للمؤشرات.

بشكل عام، الحمل المرتبط بالمؤشرات الذكية هو الحد الأدنى ويجب أن يكون لا يؤثر بشكل كبير على أداء التعليمات البرمجية. ومع ذلك، فإن الإنشاء المستمر للمؤشرات الذكية وتدميرها يمكن أن يؤدي إلى اختناقات في الأداء.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3