Tôi có hàm lambda cấp cao nhất và sau đó có vài hàm lambda lồng nhau bên trong lambda này.Hàm Lambda lồng nhau - Hàm ý hiệu suất
Ý tưởng hay là tổ chức lambdas bên trong lambdas khác? Có bất kỳ tác động hiệu suất nào không?
Ví dụ:
auto Multiplier1 = []() -> int
{
auto Multiplier2 = [](int i) -> int
{
auto Multiplier3 = [](int i) -> int
{
return i * 2;
};
std::cout << "Calling another lambda 2\n";
return Multiplier3(i * 100);
};
int i = 10;
std::cout << "Calling another lambda 1\n";
int ret = Multiplier2(i);
return ret;
};
int ret = Multiplier1();
std::cout << ret << "\n";
Trong ví dụ trên, tôi có thể tái nhân tố Multiplier2 và Multiplier3 thành các chức năng riêng biệt. Đó có phải là một cách tiếp cận tốt hơn so với điều này?
Tôi đang sửa đổi mã đã được sản xuất và do đó, tôi đang trong tình thế tiến thoái lưỡng nan có nên xác định lại mã đó thành các hàm riêng biệt hoặc quản lý bằng hàm lambda hay không.
"* Có bất kỳ tác động nào về hiệu suất không? *" Đối với các lambdas vô nghĩa, như bạn có, tuyệt đối không. – ildjarn
Câu hỏi trung thực: Tại sao không quấn một vòng quanh ví dụ đóng hộp bạn có và thời gian. Sau đó, refactor và thời gian đó? Như @ildjarn chỉ ra bạn cần phải chắc chắn chữ ký của những lambdas là chính xác tương đương với lambdas thực bạn có trong sản xuất. – Hal
@Hal Bạn nói đúng. Điều tốt nhất là thời gian và kiểm tra hiệu suất. –