|
|
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
BellicЧитал разом файл в массив TByte и спокойно работал с ним, а в RawByteString - реально засунуть бинарник длиной к примеру 25 Мбайт а потом искать в нем вхождение с помощью Pos?2 Гб влезает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 19:27 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatНо вангую что Pos +RawByteString будет работать быстрей. О да.. Быстрее Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:01 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Няшик, Давно ли ты сорцы с директивой PUREPASCAL пересобирал? у нормальных людей как-то так Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:17 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
НяшикrgreatНо вангую что Pos +RawByteString будет работать быстрей. О да.. Быстрее У меня код Поиска и Замены на TByte получился с таким же количеством строк..))) Код: 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. Но даже тут возможно еще что то оптимизировать!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:22 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Выше - код на ассемблере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:24 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatДавно ли ты сорцы с директивой PUREPASCAL пересобирал? rgreat , а вот это уже серьезный шаг!!! Класс! Суть я понял, но вижу первый раз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:25 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatВыше - код на ассемблере. И много таких замен существует для функций и прочего? (Может и мне пора пересборкой занятся?.. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:29 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, Оно под виндой и так на ассемблере. Ничего делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 20:34 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreat, 64 битном приложение твой asm - не будет работать. И вся оптимизация к коту под-хвост. Да-да. Если он надумаем, или уже использует 64 битный компилятор. То всё, его код будет медленным. На 32 битном приложение asm быстрее в 10 раз . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:17 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatНо вангую что Pos +RawByteString будет работать быстрей.Кстати - с помошью Pos() смещение до первого вхождения я то найду, а с последующими как быть? Искомая последовательность ведь может повториться еще и не раз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:38 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Няшик, https://quality.embarcadero.com/browse/RSP-13687 Проголосуй. Ну а пока - скопипасти если тебе быстрый x64 POS надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:40 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, У функции POS есть 3-й, необязательный параметр. Учи матчасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:43 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Сам себе и отвечаю..))) Видимо так?: авторPosEx(SubStr, Str: String; Offset: Integer) - функция аналогична функции Pos(), но позволяет задать отступ от начала строки для поиска. Если значение Offset задано (оно не является обязательным), то поиск начинается с символа Offset в строке. Если Offset больше длины строки Str, то функция возратит 0. Также 0 возвращается, если подстрока не найдена в строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:43 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatУ функции POS есть 3-й, необязательный параметр. Учи матчасть.Учу и учюсь, rgreat , мог бы тогда и ссылку кинуть, пока только с двумя параметрами попадаются!..( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:47 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Начиная с Delphi XE3 у Pos - 3 параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 21:50 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, Оптимизировать многое что можно Ты уверен, что оно тебе нужно? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 00:32 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Самая главная оптимизация - поиск первого байта. Есть алгоритм, позволяющий считывать сразу несколько байт, и искать первое вхождение за раз. В регистре x86 можно сравнивать сразу 4 байта. В x64 - 8. В SSE - 16. За одну итерацию. Далее. Сравнение цепочки байт. Можно сравнивать не по одному, а до 16 байт за итерацию. Ещё один подход применяют... при нахождении первого байта, сравнить ещё 2: тот что посередине, и тот что в конце. Это позволит избежать большинства ложных сравнивающих циклов. Наконец, если заморочиться, можно делать SSE операции чтения, выровненные на 16 байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 00:42 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUОптимизировать многое что можно Ты уверен, что оно тебе нужно? )))Вопрос конечно не только практический, но даже Философский!..))) Практически - вариант поиска и замены мне удобней всего в плане подготовки данных и дальнейших действий! Но на реальных данных - не шибко быстрый... ... Ну а философски - типа "Нафига оно тебе надо... позже или раньше - все Там будем?" Так что ли?..) Отвечу - вот Там то как раз и не нужно ничего будет! А тут - уж пожалуйста, двигайся, ибо движение - это Жизнь! Люби и будь любимым! Бегай, прыгай, ходи в бассейн или загорай на солнышке! Потому, что ты человек! И т.д. и т.п. Ход мыслей моих понятен? ... А может у Вас есть реальное предложение?..) А вот у меня - пожалуй есть Задачка для толкового Кодера-СИшника-Дельфина, только денег заплатить не шибко много могу!..)) (Естественно - подробности не тут! - И так ОффТопим много!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 00:51 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, Напиши в приват подробности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 01:08 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
rgreatНапиши в приват подробности.Пардон, но я Приватов тут не нахожу, разве что мыло в профиле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 01:22 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
Bellic, Ну дерзай. Все возможные пути оптимизации я тебе назвал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 01:34 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUНу дерзай. Все возможные пути оптимизации я тебе назвал Спасибо!..)) RawByteString добью сначало - где то ошибку допустил и зациклился! С КРЕЩЕНИЕМ, парни!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 01:40 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
А что, алгоритмы группы BM для быстрого поиска уже отменили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 09:30 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
white_niggerА что, алгоритмы группы BM для быстрого поиска уже отменили?да вообще какой-то трындец Алгоритм Кнута — Морриса — Пратта это же rocket science ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 09:40 |
|
||
|
Поиск последовательности в бинарном массиве
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) Алгоритм Кнута — Морриса — Пратта это же rocket scienceИ не говори. Не любят классиков, всё велосипед изобретают оптимизаторы, ля :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39586714&tid=2041298]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 547ms |

| 0 / 0 |
