"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > std::vector مقابل المصفوفات العادية: متى يكون الأداء مهمًا حقًا؟

std::vector مقابل المصفوفات العادية: متى يكون الأداء مهمًا حقًا؟

تم النشر بتاريخ 2024-12-24
تصفح:750

std::vector vs. Plain Arrays: When Does Performance Really Matter?

std::vector vs. Plain Arrays: تقييم الأداء

بينما من الشائع أن std::vector يعمل بشكل مشابه للمصفوفات، إلا أن الاختبارات الأخيرة تحدت هذه الفكرة. في هذه المقالة، سنفحص اختلافات الأداء بين المصفوفات std::vector والمصفوفات العادية ونلقي الضوء على الأسباب الأساسية.

لإجراء الاختبارات، تم تنفيذ معيار يتضمن إنشاء مصفوفات كبيرة وتعديلها بشكل متكرر من كائنات البكسل. تم إجراء الاختبارات باستخدام تطبيقين: std::vector والمؤشرات الأولية التي تحاكي المصفوفات العادية.

كشفت النتائج الأولية عن فجوة كبيرة في الأداء، حيث كون std::vector أبطأ بحوالي 3-4 مرات من المصفوفات العادية.

UseArray completed in 2.619 seconds
UseVector completed in 9.284 seconds
UseVectorPushBack completed in 14.669 seconds

دفع هذا الاكتشاف المفاجئ إلى إجراء فحص دقيق للكود. تم اكتشاف أن الاختلاف الواضح في الأداء ينبع من حقيقة أن تعديل عنصر في المتجه يتطلب الوصول إليه مرتين: مرة لتغيير حجم المتجه ومرة ​​أخرى لتهيئة العنصر.

من خلال تحسين تطبيق المتجه لتهيئة كل عنصر. العنصر مرة واحدة فقط، حصلنا على أداء محسّن بشكل كبير:

UseVector completed in 2.216 seconds

أصبح هذا الأداء المنقح الآن مشابهًا لأداء المصفوفات العادية. من المهم أن نلاحظ أن الاختلاف الطفيف الملحوظ يمكن أن يعزى إلى عوامل لا علاقة لها ببنية البيانات الأساسية.

في الختام، في حين أن std::vector عبارة عن بنية بيانات مريحة ومتعددة الاستخدامات، إلا أن أدائها يمكن أن يتأثر بالعوامل. مثل الطريقة التي تتم بها تهيئة العناصر والوصول إليها. عندما يكون الأداء أمرًا بالغ الأهمية، فمن الحكمة التفكير بعناية في المتطلبات المحددة واستكشاف الخيارات البديلة مثل المصفوفات البسيطة أو هياكل البيانات الأخرى.

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

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

Copyright© 2022 湘ICP备2022001581号-3