|
Estaba leyendo un libro de intel sobre optimización, sobre cómo optimizar los procesos aprovechando el multicore. Y se plantea una pregunta: "cuál es la mejor forma de paralelizar un compresor de gzip? podemos hacer que cada thread comprima una parte del fichero, o que cada thread abra un fichero?" Dicho así, no me parece sencillo de responder de forma obia. Una forma de sacar una conclusión es llevar el tema al extremo. Pensemos, por ejemplo, qué pasaría si tenemos 5000 threads? La segunda opción se vuelve un poco más complicada, porque nuestro programa intentaria abrir instantáneamente 5000 ficheros, y el sistema operativo sufriría un fuerte golpe en rendimiento. Esto me hace pensar en la metodología de llevar al extremo las cosas. Sobre todo, porque en el mundo de la animación, haciendo una película, normalmente el extremo es lo normal. Tenemos millones de polígonos, millones de rayos, millones de texturas, millones de pelos, millones de ficheros, etc. Si existe algun cuello de botella, o si existe algun punto abierto a desbordarse, probablemente lleguemos a encontrarlo pronto. Suele ser cuestión de tiempo que lleguemos al extremo de las cosas. En la empresa, este suele ser una buena receta para el desastre. Muchas veces el chavalín de turno se curra un script que, en laboratorio, y con medidas controladas, funciona correctamente, pero cuando "entra en producción", puede crear muchos problemas. Producción es el ejemplo de llevar todo al extremo. Por cierto, otro sitio donde encontré este mismo razonamiento fue el último libro de Alan Greenspan, hablando sobre economía. Él lo utiliza para saber si una reforma o una nueva regulación puede ser bueno. Reducir los impuestos es bueno? preguntémonos qué pasa sin impuestos. Reducir la regulación es bueno? preguntémonos qué pasa sin regulación... y este tipo de pensamientos nos ayudará a razonar mejor y sacar conclusiones más claras.
|