|
|
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
И вот это по идее должно ускорить Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:26 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Без инлайна Nyashik: 0,719825 SOFTFORYOU: 0,724851 Bellic: 11,049624 С инлайном Nyashik: 0,842163 SOFTFORYOU: 0,896055 Bellic: 11,008099 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:46 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
StartCode: 0,655306 StartCodeTBytes: 0,434061 Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:57 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТут очень странный человек Тебя учат работать с хексом, показывают, как ускорить твой код. А ты говоришь, что я о...ел. Ну если не хочешь - я не стану помогать с твоим кодом Извини, но у тебя очень странные манеры обучения! Причину моего возмущения - я тебе объяснил! Только не говори, что не понял ее! Если обидел своей несдержиннастью - не серчай, я и правда очень спешил тогда..(( SOFT FOR YOUРаз уж у тебя тест под рукой - можешь сделать вывод в TBytes, а не RawByteString. Он по идее ещё раза в полтора должен быстрее работать Если это касается моей темы "Поиска и замены.." - в этом цикле мы готовили один из параметров для процедуры Поиска и Замены, который Вы, SOFT FOR YOU, предложили сделать на RawByteString и Pos()... Тогда по идее нужно будет переделывать и ее на TBytes? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 19:57 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Няшик, Ну как я и говорил ) Полтора раза )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 20:04 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, Ты же сам всё прекрасно знаешь Что я тебе буду объяснять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 20:05 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Отдыхая, проветривая мозг... Я начал обдумывать твою оптимизацию функции... Полез в asm и увидел, что можно сократить его на 1 лишнюю инструкцию Код: pascal 1. Но увы и ах... Мне не удалось сделать это из кода Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Результат выполнения StartCode: 0,639610 StartCodeTBytes: 0,414529 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 00:18 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Няшик, Попробуй так (не проверял) function HexToByte(const Value: Cardinal): Cardinal; asm or eax, $20 lea ecx, [eax - $57] cmp eax, $39 lea eax, [eax - $30] cmova eax, ecx end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 00:48 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Стало гораздо лучше StartCode: 0,566828 StartCodeTBytes: 0,411922 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 01:32 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, о чем идет речь, то можно попробовать по 2 байта за раз Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:58 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Мне кажется лучше так (но я не тестировал) Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:17 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
shr 6 наверно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:18 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, моя переставляет для little endian, если переставлять не надо, то наверно можно проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:23 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Да, ты прав. У тебя же ещё микс байт делается. Только Cardinal лучше на Integer заменить - там нет ограничения на регистры. Кстати изложи логику расстановки констант. Ребятам, да и мне тоже, будет познавательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:37 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Логика прозрачная. Финальный сдвиг на 24, чтобы не надо было в конце and-ить с $FF. $0F0F - очевидное выделение младших ниблов для цифр и букв. В константе $10010000 старшая единица ставит на место биты 0..3, младшая - биты 8..11, т.е. переставили. Замечаем, что при этом буковки дают результат на 9 меньше положенного. Недостающую 9 формируем аналогично из битов $4040, которые не присутствуют в цифрах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 17:37 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Не одна из функций, не работает правильно... У Aleksandr Sharahov функция не работает как надо. SOFT FOR YOU Asm: 0,414427 SOFT FOR YOU Code: 0,455227 MyAsm: 0,398304 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Я вздёрнул всех Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 17:45 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
НяшикНе одна из функций, не работает правильно... Эта фраза не сюда относилась. Перепутал форумы. И пока делал тесты, не заметил что это сюда написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 17:46 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
НяшикУ Aleksandr Sharahov функция не работает как надо. Возможно, я не понимаю, как надо. Поясни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 18:02 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Я просто глянул на результаты, и увидел что они отличаются от того, что было. А потом глянул, что генерируется у SOFT FOR YOU и переделал под ASM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 18:21 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Няшик, Александр (и я неудачно попытался повторить) реализовал чтение не одного, а сразу двух байт. А в твоём тесте его функция вызывается дважды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 18:48 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
НяшикЯ вздёрнул всех смотри, а то пропишут на пмж в баллистическую ракету ( http://smartfiction.ru/prose/sens_of_power/ ) зы. Прeдлагаю затестить табличку в 64KB ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 18:56 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
kep-ko, Давно пора :) Но мы оптимизируем чтение хексового буфера ТС с массивом замен А на самом деле надо оптимизировать поиск и замену :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 19:04 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUна самом деле надо оптимизировать поиск и заменуопять-таки 'табличка' по первому байту(символу) искомых строк :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 20:08 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
kep-ko, Ога Ахо-Корасик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 20:10 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovВ константе $10010000 старшая единица ставит на место биты 0..3, младшая - биты 8..11, т.е. переставили. Логически я это понимаю. Не могу самостоятельно в случае чего просчитать такую константу. Вот есть число 00000X0Y Необходимо получить YX~~~~~~ Соответственно Y нужно поместить на место 28 бита, X нужно поместить на 24 бит. Соответственно для Y у меня выходит константа $0001 shl 28 А для X я подставляю $0100 shl (24 - 8). И это не правильно. Расскажи, какой логикой руководствуешься, определяя константу. Туплю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 23:13 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39589522&tid=2041298]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 573ms |

| 0 / 0 |
