"هل تريد السرعة؟ تجاوز القيمة" - استكشاف الآثار المترتبة على الأداء
بيان سكوت مايرز "هل تريد السرعة؟ تجاوز القيمة" يثير أسئلة حول فوائد الأداء لتمرير الكائنات حسب القيمة مقابل المرجع. في هذا السياق، يتضمن التمرير حسب القيمة عملية نسخ، بينما يؤدي المرور حسب المرجع إلى تجنب النسخ غير الضرورية. std::string mem_name; X(std::string name) : mem_name(std::move(name)) {} }; الهيكل ص { std::string mem_name; Y(const std::string &name) : mem_name(name) {} };
في مُنشئ X، يتم نسخ اسم الوسيطة إلى كائن مؤقت قبل استدعاء مُنشئ النقل على std::string لتهيئة mem_name. في مُنشئ Y، يكون اسم الوسيطة مرجعًا ثابتًا، ولكن لا يزال يتم عمل نسخة لتهيئة mem_name. لذلك، يقوم X بإجراء عملية "نسخ ثم نقل"، بينما يقوم Y بإجراء نسخة واحدة.
struct X {
std::string mem_name;
X(std::string name) : mem_name(std::move(name)) {}
};
struct Y {
std::string mem_name;
Y(const std::string &name) : mem_name(name) {}
};
قيم L: سيقوم كل من X وY بإجراء نسخة (في X عند تهيئة الاسم، في Y عند تهيئة mem_name)، متبوعة بعملية نقل في X.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3