Tôi có hai phiên bản fast newline-counting routine. Một cái chạy trên phần cứng cũ hơn, trong khi cái còn lại chạy nhanh hơn nhiều bằng cách sử dụng lệnh POPCNT, có sẵn trên phần cứng mới hơn (ví dụ: CPU Intel thế hệ thứ 6).Làm cách nào để phát hiện liệu CPU có hỗ trợ POPCNT tốt?
Bây giờ tôi muốn sử dụng phiên bản tốt nhất cho mỗi CPU — làm thế nào tôi có thể tìm hiểu xem nó có triển khai POPCNT hiệu suất cao không?
Không nên ['count_ones'] (https://doc.rust-lang.org/std/primitive.usize.html#method.count_ones) tự động làm điều đó? – starblue
@ starblue nó có thể khác nhau. Sử dụng 'count_ones' sẽ cho phép LLVM tối ưu hóa cho máy ** target **, vì vậy bạn có thể loại bỏ bất kỳ quyết định thời gian chạy nào. Nếu mã được biên dịch cần có khả năng chuyển đổi trong thời gian chạy mặc dù, bạn vẫn có thể cần truy vấn bộ xử lý hiện tại. – Shepmaster