la diferencia de frecuencias entre el 3700x y el 3600x es muy pequeña aquí el factor determinante serán las aplicaciones que esten diseñadas para aprovechar todos los núcleos del procesador tanto en amd como en intel, pero yo no veo a los programadores motivados en ello porque es mas fácil programar para un único núcleo que para todos los núcleos del procesador. Ademas les suelen pagar mal en este país. Los que pueden se marchan al extranjero a trabajar y hacen bien.
Hola ricardogayuyu,
Yo te puedo hablar de ese tema de primera mano, soy programador de formación aunque en mi vida laboral me he dedicado más a la parte de técnico de sistemas y montaje de equipos que a la programación.
No obstante, ahora mismo me encuentro desarrollando una aplicación (no es un juego, es una aplicación profesional) y desde primer momento he querido aprender y orientarlo todo a aprovechar el multinúcleo. Obviamente lo primero que te voy a decir es de perogrullo:
Es muchísimo mas fácil y rápido programar para un solo hilo.
Programar para varios hilos implica separar las tareas en partes que no dependan unas de otras, que se puedan ejecutar al mismo tiempo como si fuesen dos programas diferentes. En definitiva, es lo que es, dividir un trabajo en varias partes.
Si te pongo un ejemplo práctico: has montado alguna vez un ordenador? cuanto tardas en montarlo? Podría montarse un PC entre dos personas?, y entre cuatro? Como sería? Imaginate.... Uno va sacando la caja del PC del embalaje y le va montando la fuente, otro va sacando la placa base, montando la CPU, ram y disipador...y que hacen los otros dos?.
Se puede programar para varios núcleos, yo lo estoy haciendo, pero como digo es complicado, muchas veces hay que darle una vuelta de tuerca (o varias), y ser muy creativo para buscar la forma de dividir un trabajo y que se gane tiempo el usar varios núcleos.
Porque esa es otra, el mero hecho de dividir las tareas de forma que puedan ser paralelizadas, la mayoría de las veces implica el uso de estructuras de datos "thread-safe", las cuales funcionan algo más lento por el control que necesitan para evitar fallos de datos, y además requiere cambiar la forma en la que se hace todo, necesitando
procesos adicionales que también requieren tiempo de procesamiento.
Al final me he encontrado en la práctica que algunas tareas muy paralelizables se realizan casi en un 25% del tiempo si uso los cuatro núcleos de mi 6600k que si uso solamente uno. Sin embargo, otras tareas usando cuatro núcleos no consiguen ni doblar el rendimiento, es decir, si con un núcleo tardo 4 segundos al usar los cuatro se tarde 2,5 segundos; el problema es que con dos núcleos pasa a veces que se tarda más que si se usa uno solo. Esto hace que tenga que ir mirando con lupa cada tarea, hacer bastantes pruebas, y a veces hacer que el programa mire el número de núcleos disponibles, y que ejecute en paralelo solamente si la máquina tiene al menos 4 hilos, pero seguir ejecutando en secuencial (aprovechando un solo core) si el PC es solo un doble núcleo (requiriendo por supuesto programar dos procesos diferentes, uno que use un solo núcleo y otro que use varios).
El hecho de que el estándard de núcleos esté aumentando lo que hace es forzar a los programadores a aprovechar más núcleos: Yo no necesito ni mirar a otro lado, solo tengo que mirarme a mi mismo; te quiero decir con esto que si no hubiesen salido los Ryzen y siguiéramos con el estancamiento que nos impuso Intel, donde solo los equipos de gama alta tenían i7s de 4 núcleos y en muchas oficinas lo máximo que tenían eran pentiums de doble núcleo o como mucho i3 de doble núcleo con HT, lo mismo pienso que no me merece la pena todo el curro y paso de optimizar. Al fin y al cabo, si creas un programa tienes que pensar en la mayoría de la gente que lo va a usar.
Mi programa está orientado a oficinas, y en ellas te puedo asegurar que verás incluso a día de hoy ningún i7 de 4 núcleos y poquitos i5, pues no hay conciencia de que un equipo mas rápido significa mayor productividad. Es decir, la gente suele ver los equipos informáticos como un gasto en lugar de como una inversión que te permite acelerar el trabajo y ganar tiempo (lo que es un pensamiento de troglodita, pero es la realidad).
Te quiero decir con esto, que ahora que prácticamente las gamas bajas ya tienen 4 núcleos reales y que parece que dentro de dos meses tendrán 6, y los equipos "normales" tendrán 8/16, la situación es bien diferente. Gracias a AMD estamos aumentando el estándard de núcleos, y eso hace que los programadores nos animemos a sacarles partido, porque la gente que use nuestros programas se los sacará.
Como siempre digo, el hardware siempre tiene que dar el paso antes que el software.
Un saludo