J'ai un logiciel de trading financier. Il décode les messages rapides / fixes. J'exécute les mêmes fichiers binaires sur deux machines différentes avec un ensemble de données très similaire. Les logiciels reçoivent des "messages" et les décodent. La règle générale - un message plus long prend plus de temps à décoder:
i7-860, Windows 7:
Debug 18:23:48.8047325 count=51 decoding take microseconds = 300
Debug 18:23:49.7287854 count=53 decoding take microseconds = 349
Debug 18:23:49.7397860 count=110 decoding take microseconds = 516
Debug 18:23:49.7497866 count=92 decoding take microseconds = 512
Debug 18:23:49.7597872 count=49 decoding take microseconds = 267
Debug 18:23:49.7717878 count=194 decoding take microseconds = 823
Debug 18:23:49.7797883 count=49 decoding take microseconds = 296
Debug 18:23:49.7997894 count=50 decoding take microseconds = 299
Debug 18:23:50.7328428 count=101 decoding take microseconds = 583
Debug 18:23:50.7418433 count=42 decoding take microseconds = 281
Debug 18:23:50.7538440 count=151 decoding take microseconds = 764
Debug 18:23:50.7618445 count=57 decoding take microseconds = 279
Debug 18:23:50.7738452 count=122 decoding take microseconds = 712
Debug 18:23:50.8028468 count=52 decoding take microseconds = 281
Debug 18:23:51.7389004 count=137 decoding take microseconds = 696
Debug 18:23:51.7499010 count=100 decoding take microseconds = 485
Debug 18:23:51.7689021 count=185 decoding take microseconds = 872
Debug 18:23:51.8079043 count=49 decoding take microseconds = 315
Debug 18:23:52.7349573 count=90 decoding take microseconds = 532
Debug 18:23:52.7439578 count=53 decoding take microseconds = 277
Debug 18:23:52.7539584 count=134 decoding take microseconds = 623
Debug 18:23:52.7629589 count=47 decoding take microseconds = 294
Debug 18:23:52.7749596 count=198 decoding take microseconds = 868
Debug 18:23:52.8039613 count=52 decoding take microseconds = 291
Debug 18:23:53.7400148 count=132 decoding take microseconds = 666
Debug 18:23:53.7480153 count=81 decoding take microseconds = 430
Debug 18:23:53.7570158 count=49 decoding take microseconds = 301
Debug 18:23:53.7710166 count=156 decoding take microseconds = 752
Debug 18:23:53.7770169 count=45 decoding take microseconds = 270
Debug 18:23:54.7350717 count=108 decoding take microseconds = 578
Debug 18:23:54.7430722 count=52 decoding take microseconds = 286
Debug 18:23:54.7540728 count=138 decoding take microseconds = 567
Debug 18:23:54.7760741 count=160 decoding take microseconds = 753
Debug 18:23:54.8030756 count=53 decoding take microseconds = 292
Debug 18:23:55.7411293 count=110 decoding take microseconds = 629
Debug 18:23:55.7481297 count=48 decoding take microseconds = 294
Debug 18:23:55.7591303 count=84 decoding take microseconds = 386
Debug 18:23:55.7701309 count=90 decoding take microseconds = 484
Debug 18:23:55.7801315 count=120 decoding take microseconds = 527
Debug 18:23:55.8101332 count=53 decoding take microseconds = 290
Debug 18:23:56.7341861 count=121 decoding take microseconds = 667
Debug 18:23:56.7421865 count=53 decoding take microseconds = 293
Debug 18:23:56.7531872 count=127 decoding take microseconds = 586
Debug 18:23:56.7621877 count=58 decoding take microseconds = 306
Debug 18:23:56.7751884 count=138 decoding take microseconds = 649
Debug 18:23:56.8021900 count=53 decoding take microseconds = 288
Debug 18:23:57.7392436 count=139 decoding take microseconds = 699
Debug 18:23:57.7502442 count=121 decoding take microseconds = 548
Debug 18:23:57.7582446 count=61 decoding take microseconds = 301
Debug 18:23:57.7692453 count=98 decoding take microseconds = 500
Debug 18:23:57.7792458 count=94 decoding take microseconds = 460
Debug 18:23:57.8092476 count=41 decoding take microseconds = 274
Fondation Xeon E3-1220, Windows Server 2008 R2:
Debug 18:28:57.5087967 count=117 decoding take microseconds = 255
Debug 18:28:57.5087967 count=85 decoding take microseconds = 187
Debug 18:28:57.5087967 count=55 decoding take microseconds = 155
Debug 18:28:57.5243967 count=86 decoding take microseconds = 189
Debug 18:28:57.5243967 count=53 decoding take microseconds = 139
Debug 18:28:57.5243967 count=52 decoding take microseconds = 153
Debug 18:28:57.5243967 count=55 decoding take microseconds = 146
Debug 18:28:57.5243967 count=103 decoding take microseconds = 239
Debug 18:28:57.5243967 count=83 decoding take microseconds = 182
Debug 18:28:57.5243967 count=85 decoding take microseconds = 180
Debug 18:28:57.5243967 count=80 decoding take microseconds = 202
Debug 18:28:57.5243967 count=58 decoding take microseconds = 135
Debug 18:28:57.5243967 count=55 decoding take microseconds = 140
Debug 18:28:57.5243967 count=81 decoding take microseconds = 183
Debug 18:28:57.5243967 count=74 decoding take microseconds = 172
Debug 18:28:57.5243967 count=80 decoding take microseconds = 174
Debug 18:28:57.5243967 count=88 decoding take microseconds = 175
Debug 18:28:57.5243967 count=55 decoding take microseconds = 131
Debug 18:28:57.5243967 count=80 decoding take microseconds = 182
Debug 18:28:57.5243967 count=80 decoding take microseconds = 183
Debug 18:28:57.5243967 count=101 decoding take microseconds = 231
Debug 18:28:57.5243967 count=58 decoding take microseconds = 134
Debug 18:28:57.5243967 count=57 decoding take microseconds = 126
Debug 18:28:57.5243967 count=57 decoding take microseconds = 134
Debug 18:28:57.5399967 count=115 decoding take microseconds = 234
Debug 18:28:57.5399967 count=106 decoding take microseconds = 225
Debug 18:28:57.5399967 count=108 decoding take microseconds = 241
Debug 18:28:57.5399967 count=84 decoding take microseconds = 177
Debug 18:28:57.5399967 count=54 decoding take microseconds = 141
Debug 18:28:57.5399967 count=84 decoding take microseconds = 186
Debug 18:28:57.5399967 count=82 decoding take microseconds = 184
Debug 18:28:57.5399967 count=82 decoding take microseconds = 179
Debug 18:28:57.5399967 count=56 decoding take microseconds = 133
Debug 18:28:57.5399967 count=57 decoding take microseconds = 127
Debug 18:28:57.5399967 count=82 decoding take microseconds = 185
Debug 18:28:57.5399967 count=76 decoding take microseconds = 178
Debug 18:28:57.5399967 count=82 decoding take microseconds = 184
Debug 18:28:57.5399967 count=54 decoding take microseconds = 139
Debug 18:28:57.5399967 count=54 decoding take microseconds = 137
Debug 18:28:57.5399967 count=81 decoding take microseconds = 184
Debug 18:28:57.5399967 count=136 decoding take microseconds = 275
Debug 18:28:57.5399967 count=55 decoding take microseconds = 138
Debug 18:28:57.5555968 count=52 decoding take microseconds = 140
Debug 18:28:57.5555968 count=53 decoding take microseconds = 136
Debug 18:28:57.5555968 count=54 decoding take microseconds = 139
Debug 18:28:57.5555968 count=55 decoding take microseconds = 138
Debug 18:28:57.5555968 count=57 decoding take microseconds = 134
Debug 18:28:57.5555968 count=53 decoding take microseconds = 136
Debug 18:28:57.5555968 count=80 decoding take microseconds = 174
Debug 18:28:57.5555968 count=74 decoding take microseconds = 175
Debug 18:28:57.5555968 count=57 decoding take microseconds = 133
Debug 18:28:57.5555968 count=57 decoding take microseconds = 149
Debug 18:28:57.5555968 count=100 decoding take microseconds = 262
Debug 18:28:57.5555968 count=56 decoding take microseconds = 156
Debug 18:28:57.5555968 count=55 decoding take microseconds = 165
De ce test, je constate que l’E3-1220 est deux fois plus rapide que l’i7-860.
Est-ce possible? Parce que dans les évaluations de processeurs, ces processeurs sont à peu près les mêmes.
Est-il possible que cela soit dû au cache ou à autre chose? Et si oui, quel processeur choisir pour décoder les messages deux fois plus rapidement?
J'ai comparé les processeurs à l'aide de l'outil de calcul Pi, résultats:
Pi 16k
Xeon 00.234 sec
i7-860 00.171s
Pi 512k digits
Xeon 5.31 sec
i7-860(no HT) 5.987 sec.
i7-860(HT) 5.982 sec
Pi 4M digits
Xeon 0.56 min
i7-860(no HT) 1.11 min
i7-860(HT) 1.05 min
Donc, Xeon est en fait un peu plus rapide mais certainement pas deux fois plus rapide
Désactiver HT sur i7-860 ne change pas l’image.
i7-860, Windows 7, pas de HT:
Debug 10:09:30.7436690 count=58 decoding take microseconds = 351
Debug 10:09:34.9269083 count=47 decoding take microseconds = 347
Debug 10:09:34.9959122 count=50 decoding take microseconds = 309
Debug 10:09:35.0359145 count=45 decoding take microseconds = 297
Debug 10:09:35.1469209 count=57 decoding take microseconds = 344
Debug 10:09:35.1979238 count=54 decoding take microseconds = 460
Debug 10:09:35.2179249 count=61 decoding take microseconds = 372
Debug 10:09:35.3009297 count=51 decoding take microseconds = 275
Debug 10:09:35.3479324 count=45 decoding take microseconds = 305
Debug 10:09:35.3779341 count=58 decoding take microseconds = 311
Debug 10:09:35.3879346 count=50 decoding take microseconds = 286
Debug 10:09:35.4379375 count=48 decoding take microseconds = 290
Debug 10:09:35.4789398 count=48 decoding take microseconds = 277
Debug 10:09:35.5089416 count=49 decoding take microseconds = 286
Debug 10:09:35.5589444 count=74 decoding take microseconds = 382
Debug 10:09:35.5679449 count=47 decoding take microseconds = 298
Debug 10:09:35.7389547 count=50 decoding take microseconds = 304
Comparaison des processeurs: http://ark.intel.com/compare/52269,41316
Xeon a 50% plus de Core Ratio, 100% plus de bus système, AVX, mémoire ECC, Turbo Boost 2.0, AES, commutation à la demande Intel®, technologies de surveillance thermique, accès rapide à la mémoire Intel®, accès à la mémoire Intel® Flex
Le i7-860 est doté de la technologie Intel SpeedStep® améliorée et HT
Probablement à cause de nombreuses technologies supplémentaires, Xeon est 2 fois plus rapide ....
la source
Réponses:
Deux choses que vous manquez complètement.
Le numéro 1 est une réponse directe à votre question. La génération Nehalem, alias i7 1.0, était une avancée considérable par rapport au Core 2 Duo, mais après Sandy Bridge, Intel a commencé à avoir du mal à trouver des améliorations de performances et à se stabiliser. Votre Xeon est environ 20% plus rapide pour une horloge dans sa version i7 de la même génération, et dans des charges de travail quelque peu optimisées pour la L2, vous pouvez la rapprocher de 40% car elle a une taille plus grande que la version i7. S'il s'agit du processus principal en cours d'exécution sur ce système à ce moment-là (comme dans le partage des ressources en lions), il devient encore meilleur du fait que moins de choses nécessitent de la mémoire sur le processeur.
Numéro 2 et probablement le facteur le plus important ici: taille du cache.
Intel sait pertinemment que seules les charges de travail moins importantes que le cache L2 fonctionnent à la vitesse réelle du processeur, et que tout le reste fonctionne à la vitesse qu'il faut au processeur pour échanger des bits dans le cache L2. En quelque sorte, c'est positif car cela discipline les programmeurs, de sorte qu'ils voient beaucoup plus d'avantages à créer un code plus petit et plus efficace, mais je soupçonne également une béquille délibérée pour le consommateur; l’autre méthode principale pour différencier les performances de traitement des chiffres de Xeon à i7 (d’autre part, car le décompte principal et AVX sont les principaux tirages). Toutes les autres facettes de la performance de Xeons sur i7 sont liées à la bande passante ... dépendante d’autres entreprises qui améliorent leur technologie (pour utiliser cette nouvelle bande passante) afin que Xeon justifie sa valeur dans les charges de travail générales (non-AVX / 2).
C’est la raison pour laquelle votre Xeon (et la plupart des Xeons) dispose d’un cache beaucoup plus volumineux, 1 Mo N2, et de votre i7, 256 Ko (L2) (probablement plus lent en raison de son âge), et je suppose - car ce processus semble être détaillé, ensemble de tâches facilement exécutables, probablement écrit sous la forme d'une fonction de boucle qui tient dans une petite quantité de mémoire - il sera très sujet aux avantages de la vitesse de cache L2 et s'échangera moins dans le Xeon, améliorant considérablement les performances. Bien entendu, pour des raisons de marketing, la statistique de cache L2 a été supprimée de l’Arche d’Intel et remplacée par la statistique 'SmartCache', qui est en gros votre cache L3, c’est-à-dire le cache utilisé pour échanger des données entre cœurs, et beaucoup plus lent et moins performant.
la source
Deux processeurs de générations / fabricants différents ne fonctionnent pas de la même manière, quels que soient leur nombre de cœurs et leur vitesse d'horloge. Le E3-1220 est un processeur de 2011 alors que le i7-860 est un processeur de 2009, avec une architecture plus ancienne.
Même dans les benchmarks synthétiques, le E3-1220 ( link ) surpasse le i7-860 ( link )
Si vous êtes prêt à dépenser quelques dollars de plus pour obtenir le E3-1230 ( lien ), vous obtiendrez également un hyperthreading qui offrira une augmentation considérable des performances par rapport au E3-1220 qui n’a pas de HT.
la source
Avez-vous exécuté d'autres utilitaires d'analyse comparative des performances? Il serait intéressant d’avoir un aperçu des performances des deux systèmes. Peut-être y a-t-il une différence avec un autre matériel ou logiciel.
Les deux ordinateurs utilisent-ils un système d'exploitation 64 bits?
la source