Estaba buscando una forma de hacer la codificación algorítmica adecuada usando .NET con todos los beneficios de los lenguajes modernos (por ejemplo, me gusta una verificación de tipo fuerte, sobrecarga del operador, lambdas, algoritmos genéricos). Normalmente escribo mis algoritmos (principalmente procesamiento de imágenes) en C++. Como F # como lenguaje parece ser bastante interesante, jugué un poco, pero parece ser muy lento. Como una prueba más sencilla que acabo de hacer un poco de manipulación de matrices -> aumento de brillo de una imagen:Optimización de código F # o es realmente tan lenta?
let r1 = rgbPixels |> Array.map (fun x -> x + byte(10))
parece ser un factor de al menos 8 veces más lento que una implementación en comparación C++ - aún peor para los algoritmos más complejos p.ej Convolución 2D. ¿Hay alguna manera más rápida o me pierdo alguna configuración específica del compilador (sí, creación de versión con optimización en ...)? Estoy dispuesto a pagar por la bonita y alta abstracción, pero una sobrecarga no es buena (necesitaría paralelizar en 8 núcleos para compensar :)) - al menos destruye la motivación para aprender más ... Mi otra La opción sería dejar mis algos más pesados en C++ e interactuar con C++ administrado, pero esto no es bueno, ya que mantener el contenedor administrado sería toda una carga.
Es posible que esté en línea, pero puede comenzar reemplazando la llamada a 'byte' con' 10uy'. – Daniel
¿Puedes publicar tu implementación en C++ en [ideone] (http://ideone.com/) para que tengamos algo con qué trabajar? – Daniel
¿Son [estos resultados] (http://ideone.com/Z4Gvj) comparables a los suyos? – Daniel