Tôi hiện đang nghiên cứu cách viết mã C ++ hiệu quả và về vấn đề gọi hàm, một câu hỏi nảy ra trong đầu. So sánh chức năng mã giả này:
not-void function-name () {
do-something
return value;
}
int main () {
...
arg = function-name();
...
}
với chức năng mã giả giống hệt này:
void function-name (not-void& arg) {
do-something
arg = value;
}
int main () {
...
function-name(arg);
...
}
Phiên bản nào hiệu quả hơn và về khía cạnh nào (thời gian, bộ nhớ, v.v.)? Nếu nó phụ thuộc, thì khi nào cái đầu tiên sẽ hiệu quả hơn và khi nào cái thứ hai sẽ hiệu quả hơn?
Chỉnh sửa : Đối với ngữ cảnh, câu hỏi này được giới hạn trong các khác biệt độc lập với nền tảng phần cứng và đối với hầu hết các phần mềm. Có sự khác biệt nào về hiệu suất độc lập với máy không?
Chỉnh sửa : Tôi không biết đây là bản sao. Câu hỏi khác là so sánh việc chuyển theo tham chiếu (mã trước) với chuyển theo giá trị (bên dưới):
not-void function-name (not-void arg)
Mà không giống với câu hỏi của tôi. Trọng tâm của tôi không phải là cách tốt hơn để chuyển đối số vào một hàm. Trọng tâm của tôi là trên đó là cách tốt hơn để vượt qua ra Kết quả là cho một biến từ phạm vi bên ngoài.