Tôi cần phải có số 8 bit trên cpu 64 bit và chuyển nó sang phải 8 lần. Mỗi lần tôi thay đổi số tôi cần phải thay đổi cùng một số 8 bit ở phía sau nó để tôi kết thúc với cùng một số 8 bit lặp lại 8 lần. Điều này sẽ kết thúc được thay đổi, thêm 8, thay đổi thêm 8 ... vv mà kết thúc lên được 40 + chu kỳ (chính xác cho tôi nếu tôi sai).Có hướng dẫn cpu thay đổi và sao chép có thể được truy cập từ C#?
Có cách nào để thực hiện thao tác này (dịch chuyển và sao chép) trong 1 chu kỳ sao cho cuối cùng tôi có cùng giá trị không?
long _value = 0;
byte _number = 7;
for (int i = 0; i < 8; i++) {
_value = (_value << 8) + _number;
}
EDIT: Tôi đang cố gắng so sánh luồng của ký tự để phát hiện từ khóa. Tôi không thể sử dụng string.contains bởi vì giá trị chuỗi có thể được trên ranh giới của bộ đệm. Ngoài ra, ứng dụng phải chạy trên CPU ARM được tích hợp cũng như CPU máy tính để bàn và máy chủ. Sử dụng bộ nhớ và chu kỳ CPU là rất quan trọng.
Tôi không nghĩ rằng loại chức năng này tồn tại. C# là một ngôn ngữ cấp cao. Nếu bạn cần các loại tối ưu hóa này, hãy sử dụng ngôn ngữ cấp thấp như C. – meziantou
@Chris Unsafe cho phép bạn sử dụng con trỏ không sử dụng hướng dẫn mới. – meziantou
"kết thúc bằng 40 chu kỳ" - chu kỳ x86/x64 là ảo như MSIL. Rất khó để dự đoán làm thế nào điều này sẽ làm việc ra trong hướng dẫn RISC pipelined. –