Como todos sabemos, en el desarrollo de software, se nos pueden pedir cosas muy ambiciosas relacionadas con la tecnología.Ejecutar una tarea intensiva de CPU/memoria: ¿qué enfoque de codificación es el más eficaz?
Recientemente me preguntaron sobre la forma más rápida de convertir 4000 documentos de Word a PDF. El código/software para hacer la conversión está en su lugar, y se ejecuta en un servidor dedicado, por lo que el hardware también está allí (esta es una tarea recurrente). Pero desde una perspectiva de rendimiento C#, ¿cuál es la mejor manera de hacer esto?
Sigo pensando en la línea de dividir esto en trozos (es decir, 40 documentos) y convertirlos (es decir, 40 documentos únicos x 1000 tareas paralelas), que se ejecutan al mismo tiempo. ¿Es esta la idea correcta, en cuanto al rendimiento? El más simple (y el más largo) es un bucle en serie que pasa por cada documento.
¿Qué recomendarías? No hay restricciones de idioma, por lo que C# 4.0, LINQ, etc. están todos disponibles.
¿Sabes cuáles serían los cuellos de botella? IO? ¿UPC? ¿Memoria? – Oded
No tiene sentido hablar de optimizaciones a menos que * medido * y saber exactamente dónde está el cuello de botella. – Jon
Me quedé con la memoria cuando vi la tarea que se estaba ejecutando (y el disco). El proceso no come CPU. – dotnetdev