Tôi muốn tạo một bộ đệm hình tròn có độ dài cố định của một số loại chung trong Haskell. Các mục trong bộ đệm cần phải được đặt cái khác trong bộ nhớ vật lý (không phải danh sách liên kết). Tôi muốn cấu trúc cụ thể này bởi vì nó sẽ cải thiện cơ hội của tất cả các dữ liệu nhận được vào bộ nhớ cache L2 trên CPU với nhau. Tôi đã đọc về cách Haskell cho phép các kiểu dữ liệu mới, tuy nhiên có vẻ như các kiểu được tạo ra bằng cách sử dụng "dữ liệu" hơn một chút so với các cấu trúc c tôn vinh với kiểu kết hợp và các phương thức liên quan. Có thể tạo ra các cấu trúc dữ liệu mức thấp như cấu trúc được mô tả ở trên hoàn toàn trong Haskell hay không.Chiều dài cố định chiều dài đệm trong haskell
Trả lời
Bạn muốn cấu trúc giống như mảng, và bạn đặc biệt muốn không bị chặn để mảng bên dưới không chỉ trỏ đến dữ liệu của bạn mà còn là các mục.
Data.Array từ thư viện mảng tiêu chuẩn cung cấp cho bạn một phiên bản đó, nhưng đặc biệt là mảng hiệu suất cao có sẵn từ thư viện vector: http://hackage.haskell.org/package/vector
Thư viện vector, như ByteString, Text, và một vài người khác , sử dụng số lượng hợp lý các nguyên thủy cụ thể ở mức độ thấp ghc dưới mui xe. Để chỉ sử dụng thư viện, bạn không cần phải lo lắng về những điều đó. Nhưng nếu bạn quyết định rằng thư viện không cung cấp cho bạn những gì bạn cần, thì bạn cũng có thể tìm hiểu một số tiền hợp lý theo cách thủ thuật và kỹ thuật bằng cách đọc qua mã nguồn của chính nó.
Một tính năng thú vị khác với Data.Vector là nó tương đối đơn giản để truyền các mảng 'Data.Vector.Storable' vào thư viện C. –
xem gói hackage 'vector-buffer'. – vivian
Vâng, điều này chắc chắn có thể xảy ra. Chương creating a bloom filter từ Real World Haskell phải là một ví dụ rất tốt cho các loại triển khai này.
- 1. GetPrivateProfileString - Chiều dài bộ đệm
- 2. đối số chiều dài Tiềm ẩn trong chiều dài cố định-vector-chức năng trong Agda
- 3. Làm cách nào để viết hàm chiều dài không gian cố định trong Haskell?
- 4. Cấu trúc ngăn xếp chiều dài cố định ở Clojure
- 5. MySQL Xác định chiều dài VarChar dài nhất
- 6. Nhận chiều dài của mảng chuỗi không rõ chiều dài
- 7. Chiều dài dữ liệu so với chiều dài CRC
- 8. Chiều dài chuỗi bash
- 9. chiều dài đế
- 10. Mảng Chiều dài trong Java
- 11. Chiều dài của từ dài nhất trong một danh sách
- 12. Chiều dài chuỗi giữa các con trỏ
- 13. Python: Tổng chiều dài chuỗi
- 14. Kéo dài chiều dài của trục lô trong R?
- 15. Kích thước mảng (Chiều dài) trong C#
- 16. PDO PARAM_STR và chiều dài
- 17. Clojure chiều dài của chuỗi
- 18. chiều dài chuỗi id facebook
- 19. Hàng loạt: chiều dài nhãn
- 20. Cách giảm chiều dài cột trong DB2
- 21. Couting ký tự, từ, chiều dài của các từ và tổng chiều dài trong câu
- 22. Cách lấy chiều dài Chuỗi
- 23. trận Zero-chiều dài trong Java Regex
- 24. Tìm chiều dài đường viền trong opencv
- 25. Mảng có chiều dài không xác định trong C#
- 26. max (chiều dài (trường)) trong mysql
- 27. Tính chiều dài từ điển trong Flex
- 28. Tệp GZIP Tổng chiều dài trong C#
- 29. Tạo băm cố định chiều dài trong python cho tham số url
- 30. Kiểm tra Chiều dài đa chiều Mảng với Javascript
Rất khó có lý do cấp thấp trong Haskell. IMHO, tốt hơn là sử dụng C cho các tác vụ mà bạn muốn ép ra các giọt hiệu suất cuối cùng. – fuz
Tôi tự hỏi làm thế nào [Data.Sequence] (http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Sequence.html) sẽ so sánh với cấu trúc dữ liệu như vậy. –
jaspervdj, sclv, Dan Burton, cảm ơn câu trả lời. Tôi không chắc câu trả lời tốt nhất là gì, nhưng tôi sẽ nghiên cứu mọi thứ mà các bạn gợi ý. Cảm ơn một lần nữa. –