|
|
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Polesov Похоже, у меня ошибка - в ТЗ младший бит результата = младший бит 2-го аргумента Ну это не критично Я свой код не проверял ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:41 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Та-даааа ) Имя, сестра, имя ... ) Какие в итоге результаты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:41 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov SOFT FOR YOUогромных заранее рассчитанных таблиц? Табличка в 256 word (то бишь 512 байт) - огромна? Ну через таблицы понятно как решить Я чёт думал, что можно через умножения и сдвиги А похоже что нельзя Мож Шарахов придёт, интересный вариант накатает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:42 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev Почему "Result shl 1" ? Потому что он "вдвигает" по 1му биту из WordA, а WordB остаётся на месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:42 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Polesov, Ну у кого как У меня получилось в 2 раза быстрее, чем твой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:43 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Polesov, Ну у кого как У меня получилось в 2 раза быстрее, чем твой Странно, у меня получилось, что твой вариант быстрее всего на ~2%, что и понятно - меньше переходов. Видимо, зависит от модели процессора. Если будет не влом, реализую твой алгоритм на asm и сравню ... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:52 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Polesov У меня получился выигрыш ~17% Во-первых, надо увеличить количество итераций в 100 раз, а то у меня разброс времени выполнения от 170 до 240 при разных запусках. Во-вторых, вот читерский вариант: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. У меня на компе вот так: Код: plaintext 1. 2. 3. SOFT FOR YOU, Результат твоего кода не совпадает с нашим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 19:56 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
alekcvp Polesov У меня получился выигрыш ~17% Во-первых, надо увеличить количество итераций в 100 раз, а то у меня разброс времени выполнения от 170 до 240 при разных запусках. Во-вторых, вот читерский вариант: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. У меня на компе вот так: Код: plaintext 1. 2. 3. SOFT FOR YOU, Результат твоего кода не совпадает с нашим. А, понял, он тоже слова местами меняет. Да, этот вариант быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 20:03 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Ну мне кажется нет разницы, сначала идут биты w1 или w2 Ассемблер можно посмотреть дизассемблировав функцию (Ctrl+Alt+C в отладке) Там кстати сделано в 3 регистра :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 20:05 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
alekcvp, Ты можешь ускорить свой вариант Можно проинициализировать переменную Mask стартовым значением Сделать repeat/until цикл, где на каждой итерации модифицируется Result и потом сдвигается Mask При достижении Mask определенного значения - выходить из цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 20:12 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU alekcvp, Ты можешь ускорить свой вариант Можно проинициализировать переменную Mask стартовым значением Сделать repeat/until цикл, где на каждой итерации модифицируется Result и потом сдвигается Mask При достижении Mask определенного значения - выходить из цикла Я уже забил маску в таблицу. Со сдвигом маски будет медленнее, я проверял. Самый быстрый цикл - for , по крайней мере раньше был. Хотел сделать свой ассеблерный вариант, но обломался. На Z80 была команда сдвига через флаги (то ли ZF, то ли CF, не помню уже), был очень удивлён не обнаружив ничего похожего в x86... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 20:46 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Polesov, Ну у кого как У меня получилось в 2 раза быстрее, чем твой Вот такая простыня оказалась самой быстрой ) Код: 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. 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. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 21:09 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Polesov SOFT FOR YOU, Такие вещи на ассемблере, как правило, быстрее. В основном, за счет регистровой ручной оптимизации - нет обращений к стеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 21:25 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Квейд сейчас обращение к стеку по скорости мало чем отличается от обращения к регистру Все же обращение к стеку хоть и немного, но медленнее обращения к регистру - где-то на 0.08% Замерял на этом коде: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 21:49 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Polesov Вот такая простыня оказалась самой быстрой ) А вот фиг: Ассеблер для упоротых :) Код: 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. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 22:24 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Выложите полный файл А то сравниваете не понятно что с чем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 22:32 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
посмотрел список команд. увы, но проц нативно биты не почередует, ничего подходящего нет. мне ассемблерный вариант с or mask нравится. наверно это лучшее, что можно сдлать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 22:34 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Всё, быстрее уже не получается :) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2020, 22:49 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
alekcvp, так немного быстрее Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2020, 01:34 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Вы что-то, ребята, затупили и с таблицами не попробовали. Сибиряков правильно подсказал, они небольшие. Только их 2 нужно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2020, 01:47 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Только по условиям задачи тип параметров - word. L1G, Только время генерации таблиц тоже включай 🤣 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2020, 01:50 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
alekcvp Aleksandr Sharahov, Только по условиям задачи тип параметров - word. Значит, надо исправить условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2020, 01:51 |
|
||
|
Микширование бит
|
|||
|---|---|---|---|
|
#18+
Но да, там всё равно уже бесполезно рыпаться 😁 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2020, 01:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40022899&tid=2037816]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 462ms |

| 0 / 0 |
