Các macro thường được gọi là likely
và unlikely
macro giúp trình biên dịch biết liệu if
thường sẽ được nhập hoặc bỏ qua. Sử dụng nó dẫn đến một số cải tiến hiệu suất (khá nhỏ).
Tôi đã bắt đầu sử dụng chúng gần đây và tôi không chắc nên sử dụng những gợi ý như vậy thường xuyên như thế nào. Tôi hiện đang sử dụng nó với if
s kiểm tra lỗi , thường được đánh dấu là unlikely
. Ví dụ:
mem = malloc(size);
if (unlikely(mem == NULL))
goto exit_no_mem;
Có vẻ ổn, nhưng việc kiểm tra lỗi if
xảy ra khá thường xuyên và do đó việc sử dụng các macro đã nói.
Câu hỏi của tôi là, có quá nhiều để có likely
và unlikely
macro trên mỗi kiểm tra lỗi if
không?
Trong khi chúng ta đang ở đó, những nơi khác họ thường sử dụng?
Theo cách sử dụng hiện tại của tôi, nó nằm trong một thư viện tạo ra sự trừu tượng hóa từ hệ thống con thời gian thực, vì vậy các chương trình sẽ trở nên di động giữa RTAI, QNX và các hệ thống khác. Điều đó nói rằng, hầu hết các chức năng là khá nhỏ và gọi trực tiếp một hoặc hai chức năng khác. Nhiều static inline
chức năng thậm chí .
Vì vậy, trước hết, nó không phải là một ứng dụng tôi có thể cấu hình. Không có nghĩa gì khi "xác định cổ chai" vì đây là thư viện, không phải là ứng dụng độc lập.
Thứ hai, nó giống như "Tôi biết điều này là không thể, tôi cũng có thể nói với trình biên dịch". Tôi không tích cực cố gắng để tối ưu hóa if
.
likely
và unlikely
tồn tại và những gì họ làm. Tôi đã không tìm thấy bất cứ điều gì thực sự sẽ đề xuất khi nào và nơi nào là tốt nhất để sử dụng chúng.