Perbezaan prestasi antara hantaran parameter lvalue dan rvalue Terdapat overhed salinan dalam hantaran parameter lvalue, yang mengurangkan prestasi, terutamanya untuk objek besar. Lulus parameter Rvalue mengelakkan overhed salinan dan meningkatkan prestasi, terutamanya untuk objek sementara atau literal.
Perbandingan prestasi fungsi lvalue dan rvalue parameter passing dalam C++
Dalam C++, hantaran parameter fungsi boleh dalam bentuk lvalue atau rvalue. Rujukan lnilai (parameter nilai) mewakili rujukan kepada objek sedia ada, manakala rujukan rnilai (parameter nilai) mewakili rujukan kepada objek sementara atau literal.
Impak prestasi
Untuk parameter lnilai, salinan parameter sebenar dihantar ke fungsi apabila fungsi dipanggil. Ini melibatkan overhed membuat salinan, yang mungkin mengurangkan prestasi, terutamanya untuk objek besar.
Rvalue argumen, sebaliknya, elakkan membuat salinan dan sebaliknya menyerahkan argumen sebenar itu sendiri kepada fungsi. Ini menghapuskan overhed salinan dan meningkatkan prestasi, terutamanya apabila berurusan dengan objek sementara atau literal.
Contoh praktikal
Kod berikut menunjukkan perbezaan prestasi antara lulus parameter lvalue dan rvalue:
#include <iostream> // 左值参数函数 void left_value_func(int& lvalue) { lvalue++; } // 右值参数函数 void right_value_func(int&& rvalue) { rvalue++; } int main() { // 左值参数 int lvalue = 10; // 右值参数 int rvalue = 20; left_value_func(lvalue); // 调用左值参数函数 right_value_func(rvalue); // 调用右值参数函数 std::cout << "左值参数: " << lvalue << std::endl; std::cout << "右值参数: " << rvalue << std::endl; return 0; }
Output:
左值参数: 11 右值参数: 21
Dalam contoh ini, parameter lvalue dihantar salinan parameter yang sedia ada, The rvalue passes pembolehubah sementara itu sendiri. Ternyata panggilan fungsi parameter nilai lebih cepat kerana overhed membuat salinan dielakkan.
Atas ialah kandungan terperinci Perbandingan prestasi parameter lvalue dan rvalue yang lulus dalam fungsi C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!