Tôi khá ấn tượng bởi thư viện C++ Eigen sử dụng các mẫu biểu thức để đạt được tốc độ cực lớn trong tính toán ma trận/vector.Scala LMS để viết đại số tuyến tính Lib
Tôi muốn sao chép thư viện này trong scala. Theo như tôi biết hệ thống kiểu scalas không đủ mạnh để làm một cái gì đó như thế này, nhưng nó sẽ có thể nhẹ LMS dàn dựng mô-đun. Dường như có một vài dự án ở đó (Delight, virtualization-lms, v.v.). Điều gì sẽ là quyền sử dụng cho loại dự án này về độ tin cậy và hiệu suất?
Cảm ơn
Chỉnh sửa: Tôi chỉ gặp các macro trong scala 2.10. Có lẽ đây là những gì tôi muốn sử dụng ở đây.
@ om-nôm-nom
Phần quan trọng được giải thích trong http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html
Ví dụ giải thích rằng một bổ sung vector
u = v + w
không có hiệu suất tốt trong (bản địa) C++ từ một biến tạm thời được tạo cho phần bổ sung và biến này được gán cho u là
for(int i = 0; i < size; i++) tmp[i] = v[i] + w[i];
for(int i = 0; i < size; i++) u[i] = tmp[i];
Eigen sử dụng mẫu Lập trình meta (bước giải thích từng bước trong liên kết ở trên) để giảm này tại thời gian biên dịch để
for(int i = 0; i < size; i++) u[i] = v[i] + w[i];
mà rõ ràng là nhanh hơn và không cần một biến thêm.
Nó có thể giúp, nếu bạn mô tả ngắn gọn cơ chế của các mẫu biểu thức. –