Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
maytonSiemargl, насколько я понял автор ведет борьбу на ниве 32х битных легаси машин с ММХ.про ммх пора забыть, sse2 существенно быстрее и есть ну очень давно (лет этак 11c 2001г) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 23:03 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovmayton, надежды не оправдались: проверил развертывание цикла в 2 раза - ускорение ~ 0.6% Мда.. тут не те условия. В исходниках крипто-алгоритмов я часто видел такой хардкод Код: plaintext 1. А в основном коде шла копи-паста эдак штук 16 или 32 раза ROUND_ENC(...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 23:07 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Перестановка операторов дает небольшой прирост скорости (итого 12.64 сек на i7-7700) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 23:08 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Небольшой флешбек. AR®Не спрашивайте про постановку задачи целиком. Она большая и скучная. Важна суть, а не постановка, а она - ниже. Знаешь ты всё таки заслужил коньяк. И хотя ты, хитрый лис не показал мне оригинальную полный стек (а я всегда смотрел в суть вызова. Кто ? Зачем? Как часто? Какие цели .... и я всегда нудный и дотошный в постановках и пытаюсь убедить бизнес-аналитика что тот не прав... и этот велосипед на костылях нелетает просто по причине само-противоречий в ТЗ) я согласен тебе его отправить. Скажи куда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 23:15 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Еще немного ускорил (итого 10.14 сек на i7-7700) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2018, 23:37 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
mayton, занафига все это, если есть теория ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 00:14 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Какая теория? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 00:16 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
mayton, о которой молчит автор-партизан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 00:21 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Хм.. да. Видимо топик живет своей жизнью. Отдельно от автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 00:26 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Наверное крякает что-то. Стесняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 00:28 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Еще ускорил - отнес сравнения подальше от вычислений (итого 9.75 сек на i7-7700) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 01:36 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
это уже за рамками добра и зла: Код: plaintext 1. 2. 3. 4. 5. 6. резулт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 08:48 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)это уже за рамками добра и зла Нормально все. Ты же r нигде не используешь, вот компилятор его и выкинул. Добавь printf(r) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 08:51 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Dima T, вот полный код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 08:55 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)вот полный код: Т.е. получается компилятор сам посчитал f(4294967337, 8589934591) ? Однако слишком вумный Долго компилировал? И что за компилятор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 08:59 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Dima T, студия 15-я да ничего он не посчитал, просто вызов GetTickCount всего 1 сделал (см листинг) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:00 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Dima T, вернее он местами поменял вызовы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:04 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Dima T, студия 15-я да ничего он не посчитал, просто вызов GetTickCount всего 1 сделал (см листинг) Он расчет тебе в printf() заинлайнил, т.е. так получилось Код: plaintext 1. Веселый замер времени получился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:04 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Dima T, нет Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. видишь, вызов GetTickCount идёт раньше чем вызов f ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:13 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)видишь, вызов GetTickCount идёт раньше чем вызов f Я про это и писал: как понимаю компилятор посчитал что эти вызовы никак не связаны меж собой поэтому соптимизировал: выкинул r и воткнул вызов f в printf(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:18 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
ы [SRC с++]f(unsigned long long, unsigned long long): vmovdqa xmm0, XMMWORD PTR .LC0 push ebx vmovq xmm3, QWORD PTR [esp+8] vmovq xmm2, QWORD PTR [esp+16] vmovd eax, xmm0 vpextrd edx, xmm0, 1 .L2: vmovdqa xmm1, XMMWORD PTR .LC0 mov ecx, eax mov ebx, edx shrd ecx, edx, 1 sar ebx vpand xmm0, xmm0, xmm1 vpxor xmm1, xmm1, xmm1 vpsubq xmm0, xmm1, xmm0 vpand xmm1, xmm0, xmm3 vmovd xmm0, ecx vpinsrd xmm0, xmm0, ebx, 1 vpxor xmm0, xmm1, xmm0 vpcmpeqd xmm1, xmm1, xmm1 vpaddq xmm2, xmm2, xmm1 vpunpcklqdq xmm2, xmm2, xmm2 vmovd eax, xmm0 vpextrd edx, xmm0, 1 vmovdqa xmm1, XMMWORD PTR .LC0 vpxor xmm1, xmm0, xmm1 vpunpcklqdq xmm1, xmm1, xmm1 vptest xmm1, xmm1 sete cl vptest xmm2, xmm2 sete bl test cl, cl jne .L4 test bl, bl je .L2 .L4: and ecx, ebx pop ebx movzx eax, cl ret[/SRC] это для Sandy Bridge (2011) и новее https://godbolt.org/g/yzz7VJ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:18 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Dima T, он функции переставляет потому что f ни на что не ссылается, добавил GetTickCount в f и перестановки уже нет Код: plaintext 1. 2. 3. 4. 5. Time = 14673 как-то дофига блин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:18 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovзанафига все это, если есть теория ) Теорий много. Все теории стоят одна другой ©. )) Спасибо за примеры кода. Будет времечко, изучу. Пара заметок: 1) корректно приводить время работы не просто для модели процессора, но с указанием его тактовой частоты 2) по ходу экспериментов я наступал как на "ложное срабатывание", так и на "ложное несрабатывание" своих асм-версий функции. Поэтому вот более серьёзный тест: все числа от 4294967297 до 4294967550 в качестве 1-го аргумента функции, второй аргумент прежний - 8589934591. Весь цикл (254 шага) не займёт больше 20 минут. Должно быть ровно 20 случаев f()==1. Если не 20, то в алгоритме ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:21 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
если обратить внимание - то заинлайненный код вызова с параметрами-константами отличается от абстрактной функции. наверно, при этих значениях, что то упростилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:21 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Siemarglесли обратить внимание - то заинлайненный код вызова с параметрами-константами отличается от абстрактной функции. наверно, при этих значениях, что то упростилось просто расчет пошел для int32_t - константы влезли в 32бита ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 09:23 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39658017&tid=1340094]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 288ms |

| 0 / 0 |
