Các macro thường được gọi là likelyvà unlikelymacro giúp trình biên dịch biết liệu ifthườ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 ifs 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 ifxả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ó likelyvà unlikelymacro trên mỗi kiểm tra lỗi ifkhô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 inlinechứ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.
likelyvà unlikelytồ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.