Perbandingan prestasi parameter lvalue dan rvalue yang lulus dalam fungsi C++

WBOY
Lepaskan: 2024-04-21 09:27:02
asal
349 orang telah melayarinya

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.

C++ 函数左值和右值参数传递的性能比较

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;
}
Salin selepas log masuk

Output:

左值参数: 11
右值参数: 21
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan