Có hiệu quả hơn cho một lớp để truy cập vào biến thành viên hoặc biến cục bộ không? Ví dụ: giả sử bạn có phương thức (gọi lại) có trách nhiệm duy nhất là nhận dữ liệu, thực hiện các phép tính trên đó, sau đó chuyển nó sang các lớp khác. Hiệu năng-khôn ngoan, nó sẽ làm cho tinh thần hơn để có một danh sách các biến thành viên mà phương pháp populates khi nó nhận được dữ liệu? Hoặc chỉ cần khai báo các biến cục bộ mỗi khi gọi phương thức gọi lại?Hiệu suất C++ truy cập các biến thành viên so với biến cục bộ
Giả sử phương pháp này sẽ được gọi là hàng trăm lần trong một giây ...
Trong trường hợp tôi không được rõ ràng, đây là một số ví dụ nhanh:
// use local variables
class thisClass {
public:
void callback(msg& msg)
{
int varA;
double varB;
std::string varC;
varA = msg.getInt();
varB = msg.getDouble();
varC = msg.getString();
// do a bunch of calculations
}
};
// use member variables
class thisClass {
public:
void callback(msg& msg)
{
m_varA = msg.getInt();
m_varB = msg.getDouble();
m_varC = msg.getString();
// do a bunch of calculations
}
private:
int m_varA;
double m_varB;
std::string m_varC;
};
Bất kỳ sự khác biệt nào gần như chắc chắn sẽ bị che khuất bởi chi phí truy xuất các giá trị ngay từ đầu. Và vài trăm lần một giây là không có gì. Chi phí của khung stack để * gọi * chức năng của bạn sẽ có khả năng lùn bất cứ điều gì bạn đã hiển thị. Có mùi như tối ưu hóa sớm. – Shog9
Downvoted đã - tối nay đám đông khó khăn – fizzer