Si el programa solo tiene 2 hilos ahi esta el problema. Los i5 todos sus hilos son de nucleos dedicados, mientras que en un i7 cada hilo impar viene del HT.
hilo 0: nucleo real
hilo 1: ht del nucleo 0
hilo 2: nucleo real
hilo 3: ht del nucleo 1
y asi.
Lo que es posible que este pasando es que solo se usen los hilos 0 y 1 de ese i7 y claro, el ht no puede ganar nunca a un nucleo real. Solucion, especifica el processor affinity:
https://www.windowscentral.com/assig...pps-windows-10
Asi puedes decirle que use para esos 2 procesos que tiras los hilos 0 y 2 por ejemplo.
Esto mismo lo note en mi i7 usando el emulador de wiiu CEMU, la wiiu tiene un procesador de 3 nucleos que se emulan en 3 hilos, pues si dejaba la affinity estandar (usando hilos 0,1,2) eso iba como el culo (uno de ellos es ht). Lo cambie a 0, 2, 4 y como la seda, mas del doble de rendimiento.
Si alguien quiere saber pq el HT es tan 'lento':
https://en.wikipedia.org/wiki/Hyper-threading
tl;dr
Es un diseño supersegmentado, donde 2 instrucciones se ejecutan en el mismo hardware casi en paralelo, estando cada una en una fase de ejecucion de la instruccion distinto. Esto en el mejor de los casos llevaria a poder ejecutar 2 instrucciones casi a la vez... pero... y si la ejecucion de la segunda instruccion depende del resultado de la primera???? basicamente hay que tirar todo el trabajo que se haya hecho hasta entonces en la ejecucion de la 2º y empezar desde el principio, tirando el rendimiento por los suelos.
Marcadores