Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovА нету как такового вариант автора. Есть вариант С++ без ассемблера на i3-2120 @3.3 ГГц. Одиночный вызов f(4294967337, 8589934591) - 19..20 секунд. Вышеописанный цикл из 254 шагов - 800..845 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 15:47 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
AR®Aleksandr SharahovА нету как такового вариант автора. Есть вариант С++ без ассемблера на i3-2120 @3.3 ГГц. Одиночный вызов f(4294967337, 8589934591) - 19..20 секунд. Вышеописанный цикл из 254 шагов - 800..845 секунд. хотелось бы наконец увидеть ассемблерный листинг этого варианта С++ без ассемблера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 16:37 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
AR®SiemarglВремя на прогон от 4294967297 до 4294967550 169сек Это была реклама китайского i7-3770@4GHz И получено 20 раз f()=1 ?да. и тесты с примерами ранее тоже прошли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 16:49 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Так был же: 21476315 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 16:57 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
AR®, если нетрудно, чтобы просто скопипастиь *всю* функцию от пушей до попов с ретами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 17:04 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovAR®пропущено... Есть вариант С++ без ассемблера на i3-2120 @3.3 ГГц. Одиночный вызов f(4294967337, 8589934591) - 19..20 секунд. Вышеописанный цикл из 254 шагов - 800..845 секунд. хотелось бы наконец увидеть ассемблерный листинг этого варианта С++ без ассемблера Я тоже голосую за C++. Ассемблер заводит нас в дебри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 17:33 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
AR®Так был же: 21476315 Ну ок. Давайте все брать его за эталон сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 17:36 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
maytonAleksandr Sharahov хотелось бы наконец увидеть ассемблерный листинг этого варианта С++ без ассемблера Я тоже голосую за C++. Ассемблер заводит нас в дебри. Никто и не против C++. Просто покажите ассемблерный код функции. А в Африку гулять пойдут только желающие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 18:52 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
AR®, это что, часть функции вычисления дискретного логарифма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 19:40 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AR®, это что, часть функции вычисления дискретного логарифма? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 21:19 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovА в Африку гулять пойдут только желающие. Тут надо бы решить, стоит ли туда, так сказать, идти. ) Пока я всё больше склоняюсь к мысли, что не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 21:22 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovAR®, если нетрудно, чтобы просто скопипастиь *всю* функцию от пушей до попов с ретами Завтра постараюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 21:23 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
SiemarglAR®пропущено... И получено 20 раз f()=1 ?да. и тесты с примерами ранее тоже прошли. >mmx64ompivy ....................result == 1 counter is 20 Time = 627404437 - 627586359 Time = 181922 каждая точка это единичка. добавил счетчик и синхронных вывод - результат чуть ухудшился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2018, 22:29 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Вы тут ассемблером балуетесь... А компилятор например не забывает перед началом цикла воткнуть .align 16 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 07:46 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
результат компиляции clang (в AT&T формате): Код: plaintext 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. Ну или так (дисассемблер в intel формат, с ручной вставкой .align вместо nop) Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 07:56 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
BarloneВы тут ассемблером балуетесь... А компилятор например не забывает перед началом цикла воткнуть .align 16 оно вроде как на современных процах не имеет значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 08:10 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)BarloneВы тут ассемблером балуетесь... А компилятор например не забывает перед началом цикла воткнуть .align 16 оно вроде как на современных процах не имеет значенияАвтору же надо на старых процессорах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 08:26 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
обещанный полный код f() от MS VC++ на аcсемблере Код: plaintext 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 10:02 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Моя последняя ассемблерная версия. Увы, 44 секунды (( [SPOILER версия с ассемблерной вставкой] Код: plaintext 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. [/SPOILER ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 10:53 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Barlone, AR®, спасибо за код. На первый взгляд везде примерно одно и то же, оптимизировать практически нечего. Дальше можно пойти по пути использования свойств алгоритма, например, учитывать четность параметра и/или 33-битность, если, конечно, автор не заинтересован в реализации тупого перебора ) Кода уже понаписано немало, самое время прояснить цель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 11:00 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Самое интересное: если убрать в моей версии блок проверки d == 1, работает 13-14 секунд. Именно эти проверки ломают intel'овский конвейер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 11:02 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
Все ручные оптимизации - бесполезная трата времени. Один исходник на чистом С, разные компиляторы: msvc, 32bit - 41 sec clang, 32bit - 18 sec gcc, 64bit - 9.5 sec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 13:08 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
еще msvc 64bit - 18sec gcc 32bit -27sec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 13:15 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
КМК этот алгоритм балансирует на грани алгоритмизации и практики использования железа. Алгоритмически например первый шаг расчета e=-(d & 1) определяет битовую маску. Которая влияет на ход вычисления всего кода дальше. В некоторых высокоуровневых ЯП можно было-бы поставить if который при прочих генерализовнных условиях мог-бы повлиять на сложность алгоритма. Типа раньше выйти из цикла. Или что-то в этом роде. Но помня о штрафных санкциях за неверный переход тут надо подумать. Для ассемблера возможно оно и лучше оперировать флажками но сохранять непрерывный поток команд без веток. Тоесть это тот случай когда алгоритмист-теоретик проиграет практикующему ассебмлерщику. Тот-же 33й бит как-то связывает руки. Так можно было-бы попробовать развернуть 2 раунда вычислений в 1 спаренный на ММХ 2 по 32. Вобщем злая постановка. Напоминает язык Malbolge, который создан чтобы поиздеваться над мозгом. Или потренировать смекалку. Впрочем без особой практической пользы для отрасли. Чисто организационно я-бы развернул для себя do{}while в for{}. Просто так привычнее. Только надо учеть 1 безусловную итерацию перед входом в цикл. Но возможно для ассемблера с его пост-условными переходами назад этот подход чуть-чуть отдаляет оригинальный код С++ от результирующего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 13:21 |
|
||
|
Ассемблер - регистры MMX - команды условного перехода.
|
|||
|---|---|---|---|
|
#18+
maytonАлгоритмически например первый шаг расчета e=-(d & 1) определяет битовую маску. Заметьте, в моей последней асм-версии я от него избавился. maytonТот-же 33й бит как-то связывает руки. Увы. Для 32 бит всё уже успешно проделано. И 33-й - это только начало и почва для отладки. Нет ли идей, что у меня ломает конвейер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2018, 13:40 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39658675&tid=1340094]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 280ms |

| 0 / 0 |
