Gần đây tôi đã nhận ra rằng tôi có thể tạo các hàm cục bộ trong Rust (một hàm trong một hàm). Có vẻ như một cách hay để dọn sạch mã của tôi mà không gây ô nhiễm không gian chức năng của một tệp. Mẫu nhỏ về ý nghĩa của tôi bên dưới theo hàm cục bộ so với hàm 'bên ngoài':Có bất kỳ ý nghĩa hiệu suất tiêu cực nào đối với việc sử dụng các hàm cục bộ trong Rust không?
fn main() {
fn local_plus(x: i64, y: i64) -> i64 {
x + y
}
let x = 2i64;
let y = 5i64;
let local_res = local_plus(x, y);
let external_res = external_plus(x,y);
assert_eq!(local_res, external_res);
}
fn external_plus(x: i64, y: i64) -> i64 {
x + y
}
Tôi đã tự hỏi liệu có bất kỳ ý nghĩa hiệu suất tiêu cực nào khi thực hiện việc này không? Giống như Rust tái tuyên bố chức năng hoặc chiếm một số lượng không gian chức năng không mong muốn mỗi lần hàm chứa chạy? Hay nó có nghĩa đen không có ý nghĩa hiệu suất?
Một chút mẹo nhỏ về cách tôi có thể tìm ra câu trả lời cho chính mình (hoặc thông qua việc đọc bất kỳ bộ tài liệu cụ thể nào hoặc công cụ tôi có thể sử dụng).
Bạn có thể tự tìm thấy nó bằng cách chạy một số điểm chuẩn hoặc kiểm tra đầu ra MIR/assembly như tôi đã làm. – ljedrz
@ljedrz: Điểm chuẩn là những con thú không ổn định, tốt nhất hãy kiểm tra IR/lắp ráp MIR/LLVM không được tối ưu hóa và tối ưu hóa. –
@MatthieuM. đồng ý - điểm chuẩn phù hợp hơn cho các trường hợp phức tạp hơn, nơi các cách khác không còn thực tế nữa. – ljedrz