с целью проведения всяческих бесчеловечных
опытов. icl.exe пишет например
Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.0.0.104 Build 20101006
Затем пересобрал на нем свою тестилку скорости хешей (на основе
fehashmac) для 64бит:
- на vs2008 со стандартными ключами оптимизации
- на icl.exe со стандартными ключами оптимизации
- на icl.exe с оптимизациями, выкрученными на максимум - например были указаны генерация кода sse4.1, global optimization & interprocedural optimization
Результаты дико угарные. Размеры .exe:
- vs2008 - 317952 байт
- intel - 471040 байт. Просмотр кода показывает что были тупо развернуты все циклы с константыми счетчиками циклов
- intel opt - 472576 байт
Прирост производительности (запускалось все на corei7, цифры даны в мегабайтах в секунду)
Hash name | vs2008 | intel | % | intel opt | % |
md5 | 74.515648 | 80.515298 | 1.0805 | 80.515298 | 1.0805 |
md2 | 1.149478 | 1.981140 | 1.7235 | 1.982868 | 1.7250 |
md4 | 108.695652 | 125.000000 | 1.1500 | 125.000000 | 1.1500 |
ripemd128 | 32.175032 | 33.156499 | 1.0305 | 32.615786 | 1.0137 |
ripemd160 | 25.354970 | 27.578599 | 1.0877 | 27.472527 | 1.0835 |
ripemd256 | 34.867503 | 35.486160 | 1.0177 | 35.637919 | 1.0221 |
has-160 | 40.617384 | 40.983607 | 1.0090 | 42.480884 | 1.0459 |
sha1 | 27.427318 | 29.002320 | 1.0574 | 28.752156 | 1.0483 |
sha-224 | 22.532672 | 22.291574 | 0.9893 | 22.291574 | 0.9893 |
sha-256 | 23.094688 | 22.301517 | 0.9657 | 22.163121 | 0.9597 |
sha-384 | 31.826862 | 33.046927 | 1.0383 | 33.156499 | 1.0418 |
sha-512 | 31.887755 | 32.959789 | 1.0336 | 33.134526 | 1.0391 |
snefru-128 | 4.716981 | 5.737235 | 1.2163 | 5.730659 | 1.2149 |
snefru-256 | 3.152386 | 3.823799 | 1.2130 | 3.823215 | 1.2128 |
tiger | 72.358900 | 88.339223 | 1.2208 | 88.652482 | 1.2252 |
whirlpool | 17.630465 | 12.303150 | 0.6978 | 12.584948 | 0.7138 |
gost | 9.926544 | 10.369141 | 1.0446 | 10.360547 | 1.0437 |
blake-224 | 30.066146 | 36.737693 | 1.2219 | 36.764706 | 1.2228 |
blake-256 | 30.175015 | 36.710720 | 1.2166 | 36.791759 | 1.2193 |
blake-384 | 52.301255 | 44.843049 | 0.8574 | 44.883303 | 0.8582 |
blake-512 | 53.191489 | 44.964029 | 0.8453 | 44.964029 | 0.8453 |
groestl224 | 13.989927 | 14.965579 | 1.0697 | 14.961101 | 1.0694 |
groestl256 | 13.947001 | 14.956626 | 1.0724 | 14.925373 | 1.0701 |
groestl384 | 10.148163 | 10.752688 | 1.0596 | 10.748065 | 1.0591 |
groestl512 | 10.164668 | 10.738832 | 1.0565 | 10.725011 | 1.0551 |
jh224 | 6.110975 | 25.720165 | 4.2088 | 25.720165 | 4.2088 |
jh256 | 6.245316 | 25.720165 | 4.1183 | 25.720165 | 4.1183 |
jh384 | 6.304375 | 25.733402 | 4.0818 | 25.680534 | 4.0734 |
jh512 | 6.348400 | 25.720165 | 4.0514 | 25.680534 | 4.0452 |
keccak224 | 22.261799 | 24.189647 | 1.0866 | 24.189647 | 1.0866 |
keccak256 | 21.043771 | 23.073373 | 1.0964 | 23.041475 | 1.0949 |
keccak384 | 16.700067 | 17.934003 | 1.0739 | 17.908309 | 1.0723 |
keccak512 | 11.851150 | 12.768131 | 1.0774 | 12.758357 | 1.0766 |
skein224 | 81.433225 | 91.743119 | 1.1266 | 91.575092 | 1.1245 |
skein256 | 86.505190 | 91.743119 | 1.0606 | 91.743119 | 1.0606 |
skein384 | 85.470085 | 91.743119 | 1.0734 | 91.911765 | 1.0754 |
skein512 | 83.194676 | 91.743119 | 1.1028 | 91.575092 | 1.1007 |
skein1024 | 46.598322 | 56.753689 | 1.2179 | 56.818182 | 1.2193 |
haval3-128 | 83.752094 | 91.240876 | 1.0894 | 91.407678 | 1.0914 |
haval3-160 | 84.317032 | 91.575092 | 1.0861 | 91.407678 | 1.0841 |
haval3-192 | 83.752094 | 91.407678 | 1.0914 | 91.407678 | 1.0914 |
haval3-224 | 81.168831 | 91.407678 | 1.1261 | 91.407678 | 1.1261 |
haval3-256 | 83.892617 | 91.407678 | 1.0896 | 91.407678 | 1.0896 |
haval4-128 | 60.901340 | 66.401062 | 1.0903 | 66.401062 | 1.0903 |
haval4-160 | 62.111801 | 66.489362 | 1.0705 | 66.401062 | 1.0691 |
haval4-192 | 62.189055 | 66.401062 | 1.0677 | 66.489362 | 1.0691 |
haval4-224 | 62.189055 | 66.489362 | 1.0691 | 66.489362 | 1.0691 |
haval4-256 | 62.266501 | 66.489362 | 1.0678 | 66.137566 | 1.0622 |
haval5-128 | 50.200803 | 53.078556 | 1.0573 | 53.022269 | 1.0562 |
haval5-160 | 50.200803 | 53.078556 | 1.0573 | 53.078556 | 1.0573 |
haval5-192 | 50.200803 | 53.078556 | 1.0573 | 53.078556 | 1.0573 |
haval5-224 | 50.150451 | 53.078556 | 1.0584 | 53.078556 | 1.0584 |
haval5-256 | 50.251256 | 53.078556 | 1.0563 | 53.022269 | 1.0551 |
Угарно что
- в некоторых случаях код от icl работает медленнее чем даже от vs2008 !
- дополнительный опции оптимизации дают копеечный выигрыш
- sse инструкций не было замечено совершенно, даже в builtin ф-ция вроде _intel_fast_XXX
Комментариев нет:
Отправить комментарий