Sau khi tìm kiếm một lỗi thời gian dài, tôi đọc về các giá trị dấu phẩy động bất thường.Tránh các giá trị bất thường trong C++
Rõ ràng denormalized giá trị dấu chấm động có thể là một mối quan tâm thực hiện chính như được minh họa trong câu hỏi này: Why does changing 0.1f to 0 slow down performance by 10x?
Tôi có một lý Intel Core 2 Duo và tôi đang biên soạn với gcc, sử dụng -O2
.
Vì vậy, tôi phải làm gì? Tôi có thể bằng cách nào đó hướng dẫn g ++ để tránh các giá trị bất thường? Nếu không, tôi có thể kiểm tra bằng cách nào đó nếu một số float
là không bình thường?
Bạn có thực sự có bất kỳ giá trị chuẩn nào trong chương trình của mình không? Dù sao, bạn có thể vô hiệu hóa chúng ở cấp CPU như @nobugz nói. Nếu bạn thiết lập đúng cờ, CPU sẽ cắt tất cả các denormals về 0, loại bỏ vấn đề. – jalf
Xem câu hỏi này để thảo luận sâu về các biến thể và đối phó với chúng: http://stackoverflow.com/questions/9314534/why-does-changing-0-1f-to-0-slow-down-performance-by -10x – fig