Tôi đang tìm cách tạo mã hóa thuật toán thích hợp bằng .NET với tất cả các lợi ích của ngôn ngữ hiện đại (ví dụ: tôi thích kiểm tra kiểu mạnh, quá tải toán tử, lambdas, thuật toán chung). Thông thường tôi viết các thuật toán của tôi (chủ yếu là prozessing hình ảnh) trong C++. Vì F # như một ngôn ngữ có vẻ khá thú vị, tôi đã chơi một chút, nhưng nó có vẻ rất chậm. Là một thử nghiệm đơn giản nhất mà tôi chỉ làm một số thao tác mảng -> độ sáng tăng của một hình ảnh:Tối ưu hóa mã F # hay nó thực sự chậm?
let r1 = rgbPixels |> Array.map (fun x -> x + byte(10))
Nó có vẻ là một yếu tố của chậm hơn so với C++ thực hiện so với ít nhất 8 lần - thậm chí tồi tệ hơn cho các thuật toán phức tạp hơn ví dụ 2D convolution. Có cách nào nhanh hơn hay tôi bỏ sót bất kỳ cài đặt trình biên dịch cụ thể nào (vâng, xây dựng bản phát hành có tối ưu hóa trên ...)? Tôi sẵn sàng trả tiền cho abstracion đẹp và cao, nhưng một chi phí như vậy không phải là tốt đẹp (tôi sẽ cần phải song song trên 8 lõi để bù đắp :)) - ít nhất nó phá hủy động lực để tìm hiểu thêm ... tùy chọn sẽ được để lại các thuật toán nặng hơn của tôi trong C + + và giao diện với C++ manged, nhưng điều này là không tốt đẹp, như duy trì wrapper quản lý sẽ được khá một gánh nặng.
Có thể nó sẽ được gạch chân, nhưng bạn có thể bắt đầu bằng cách thay thế cuộc gọi thành 'byte' bằng' 10uy'. – Daniel
Bạn có thể đăng bài thực thi C++ của mình lên [ideone] (http://ideone.com/) để chúng tôi có một số thứ để làm việc không? – Daniel
[Những kết quả này] (http://ideone.com/Z4Gvj) có thể so sánh với bạn không? – Daniel