|
|
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, Дока изначально была на русском, а потом переводилась на инглиш. Исходника уже не найти. Можно переводить доки в гугле, можно смотреть демки, можно писать на форум: http://www.sql.ru/forum/1178076-a/oficialnyy-reliz-cachedbuffers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:19 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Док, А есть претензия ко мне лично или к моему коду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:22 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
YuRockЕсли б ты еще вычитывал и сравнивал не побайтно, а там, по 16к, боюсь представить даже, как бы ты на такую скорость отреагировал. И без кэшедбуферз. Но, может, так надо, я не вдавался. Оно и правда там нужно анализировать каждый байт, поэтому по 16К никак не получится!..( В самом первом посте данного топика я попытался расписать суть настоящей процедуры, а не тестовой, и код там же имеется! Правда в ней вроде есть одна алгоритмическая ошибка (как я уже исправил ее на сегодняшний момент) и возможно - неточности с анализом выхода за пределы файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:27 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, Самое прикольное, что 2,5 секунды - не предел ReadData - это высокоуровневая функция. Если научиться работать на низком уровне - можно читать данные напрямую, сейчас кешируется 64Кб. Но это сложно, по крайней мере для твоего уровня, поэтому рекомендую не заморачиваться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:32 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUBellic, Дока изначально была на русском, а потом переводилась на инглиш. Исходника уже не найти. Можно переводить доки в гугле, можно смотреть демки, можно писать на форум: http://www.sql.ru/forum/1178076-a/oficialnyy-reliz-cachedbuffers SOFT FOR YOU , ну а тут можно еще спросить? Просто чтоб полностью переправить Реальную мою процедуру - нужно еще заменить на Ваши аналоги вот это: Код: pascal 1. и в обратку: Код: pascal 1. Ну еще раз уточнюсь: Код: pascal 1. Автоматически передвигает позицию на следующий байт, как ReadBuffer в TFileStream ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:37 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, ReadData сдвигает позицию, да Позицию в ридере ты так же можешь узнать через свойство Position Но вот привычного Seek и SetPosition не предусмотрено. Если ты прочитал данные - вернуться назад ты не сможешь. Ты можешь пропустить несколько байт спереди через функцию Skip. Ты можешь прочитать произвольный кусок с помощью функции DirectRead. Например, ты знаешь, что по такому-то смещению есть строка столько то байт. Тогда можешь вызывать DirectRead. Но в общем случае она не быстрее обычного чтения из файла, разве что если этот кусок уже закеширован внутри буфера. И DirectRead не меняет текущую позицию ридера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 13:52 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUBellic, ReadData сдвигает позицию, да Позицию в ридере ты так же можешь узнать через свойство Position Но вот привычного Seek и SetPosition не предусмотрено. Если ты прочитал данные - вернуться назад ты не сможешь. Ты можешь пропустить несколько байт спереди через функцию Skip. Ты можешь прочитать произвольный кусок с помощью функции DirectRead. Например, ты знаешь, что по такому-то смещению есть строка столько то байт. Тогда можешь вызывать DirectRead. Но в общем случае она не быстрее обычного чтения из файла, разве что если этот кусок уже закеширован внутри буфера. И DirectRead не меняет текущую позицию ридера. В общем то у меня в Реальной процедуре идет побайтное последовательное чтение и сравнение, но лишь до определенного момента, когда сработает одна из проверок. В этом месте Основная позиция запоминается и начинается чтение и анализ по другому адресу. После чего может произойти дальнейшее чтение с запомненной Осн.позиции, или же она продвигается вперед на определенное число байт. Вот такое описание надеюсь понятно? Не совсем понял - Позицию я установить могу через "свойство Position", а встать на запомненную ранее - никак??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:08 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, авторАнглийский язык иногда бывает несколько суховат и не передает некоторые нюансы русскоязычного варианта! Не правда ли?..))) Если текст писали с хорошим знанием языка, то всё там будет отлично. Ну а на уровне гугло-перевода документации, конечно, будет сухой :) авторОно и правда там нужно анализировать каждый байт, поэтому по 16К никак не получится. Что мешает сделать простейший буфер в памяти на 8-16 кб, видимо, так и останется для нас загадкой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:27 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
10 мб можно запросто вычитать целиком в память и там разбираться. Зачем все эти сложности? Ладно был бы хотя бы гиг. И то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:28 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
господа, ну реально же - 5 строк кода :) ну нафига это всё? вторая неделя разработки! это же ад какой-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:32 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
makhaon10 мб можно запросто вычитать целиком в память и там разбираться. Зачем все эти сложности? Ладно был бы хотя бы гиг. И то. Да вот же - хотел с Memory озадачиться, да SOFT FOR YOU начал обижаться на якобы игнор его библиотек..))) Пощупал, понравилось! - Вот жду уточнения на свои вопросы! Следующий вариант обязательно будет с Memory !..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:34 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
makhaonгоспода, ну реально же - 5 строк кода :) ну нафига это всё? вторая неделя разработки! это же ад какой-то :) makhaon , пардон конечно, ... 1 . 5 строк кода - это в Тестовом единственном цикле - ради сравнения!!! 2 . да и никто тут силком никого не держит в этом топике!..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:37 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Ну не разработчик я!!!..))) Дэлфи - это мой помощник в моем хобби - локализации японских ( JDM ) магнитол! Основное время днем - вожу чужих деток в школу, садик, по спорт-комплексам и обратно... На Дэлфи и JDM наскакиваю урывками, посему порой и некоторая моя "задумчивость" в ответах и решениях!,,)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:46 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, Прочитать Position можно, установить Position - нельзя Эта либа предназначается для работы с гигабайтами данных. Ну или хотя бы сотнями мегабайт. А если файлы по 10 метров - конечно, читай их в буфер и обрабатывай целиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 14:55 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicСледующий вариант обязательно будет с Memory !..))) В своём первом варианте замени файловые стримы на TMemoryStream; Например, так: Код: pascal 1. 2. 3. 4. 5. 6. ...и всё остальное оставь без изменений (будет работать и Seek и Position). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 15:28 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUBellic, Прочитать Position можно, установить Position - нельзя Эта либа предназначается для работы с гигабайтами данных. Ну или хотя бы сотнями мегабайт. А если файлы по 10 метров - конечно, читай их в буфер и обрабатывай целиком Гигов пока не предвидится...)) Сегодня 10 Метров, а завтра может быть уже и поболее! - Всегда удобно иметь под рукой подходящие и проверенные инструменты!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 15:45 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, спасибо! Я уже на "колесах"...))) Мемори уже касался чуток вот тут: http://www.sql.ru/forum/1276254/poisk-i-zamena-posledovatelnosti-bayt-v-binarnom-fayle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 15:51 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Да пусть работает с TBytes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:00 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUДа пусть работает с TBytes Мне тоже хотелось бы с ним поэксперементировать, но я еще ни разу с ним не работал! Это типа файлы в байт-массиве? Пока к ночи до компа доберусь - можно чуток кода, для затравки?..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:17 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicМемори уже касался чуток вот тут Я вижу, лёгких путей ты не ищешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:19 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
[quot Kazantsev Alexey]BellicЯ вижу, лёгких путей ты не ищешь :) Дык легкий путь (ФайлСтрим) в той процедуре вообще 24 часа работал!..))))) Мемори - решил проблему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 16:23 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUА есть претензия ко мне лично или к моему коду? помилуй, какие претензии? мы с тобой в разных полях пасемся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 17:31 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 18:25 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Читай всё в память!!! Ну правда, так быстрее всего. Одно решение уже кинули. Еще: Код: pascal 1. У тебя будет массив байт, с которым может сделать что угодно и как угодно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 19:16 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
авторЭто типа файлы в байт-массиве? Это массив байт. Кусок памяти, который отображен как n подряд идущих байт. Доступ - как к любому обычному массиву по индексу: arr[i]. И на запись и на чтение. Проще, в общем, некуда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 19:21 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39575375&tid=2041399]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 438ms |

| 0 / 0 |
