|
|
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicСледующий вариант обязательно будет с Memory !..))) Готов вариант на TMemoryStream ... Вот его код (все та же процедура с одним циклом, чтением и сравнением из двух файлов): Код: 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. Отличный результат, и без доп.библиотек! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2017, 21:46 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Очередной вариант на основе TBytes ... Код: 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. Это пожалуй Рекордсмен!..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 00:15 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic 0,08 секунды!!!!Ну вот, наконец реальное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 05:38 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicПолученное время цикла - 0,08 секунды!!!! Это пожалуй Рекордсменmmf еще попробуй. к чему эта возня с выделением памяти и чтением файлов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 09:17 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
vavan, mmf не быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 11:07 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
vavanmmf еще попробуй. к чему эта возня с выделением памяти и чтением файлов Ну вот, приплыли!... Хотел было уже перейти к некоторым "внутренностям" Реальной процедуры, ака например "SStroka := SStroka + AnsiChar(ISimvol);" и прочим, но тут явился vavan и потребовал справедливости!... Отвечу: 1 . Вот мне кажется именно с " MMF " будет как раз таки больше возни!? 2 . Не совсем этот " MMF " и его Поинтеры мне нравятся, в силу моих слабых знаний!...( Ну что ж, MMF так MMF... Попробую, но не фак, что справлюсь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 11:49 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUmmf не быстрееесли даже и так то в дидактических целях увлеченному может оказаться интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 11:49 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellicтут явился vavan и потребовал справедливостия не настаиваю, прошу прощения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 11:50 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
vavanя не настаиваю, прошу прощения Сейчас будешь исправлят!!!..)))))) (Пардон за фамильярность!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 12:18 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicСейчас будешь исправлятне, после меня и то что уже работало перестанет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 12:21 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
vavanне, после меня и то что уже работало перестанет Тогда Вы может сами быстрее чем я переделаете Тестовый пример? Код выше имеется!...))) Зато ломать свое не жалко будет!..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 12:35 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Дальше помеченной строки - не идет, потому как map=0! Что нужно подправить? Может еще где ошибки есть тут? ... Ну и сокровенный вопрос - после Маппинга, каким образом читать байты и передвигать поинтеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:02 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
BellicДальше помеченной строки - не идет, потому как map=0! Что нужно подправить? В строке: Код: pascal 1. Заменил параметр PAGE_READWRITE на PAGE_READONLY и map стал ненулевым! А что - нельзя было оставить??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:42 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, Просто ты файл открыл ну чтение. Можно рид-райт если есть соответсвующие права на файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:53 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic, MMF полезен, в частности, если файлы большие, так что их проблематично целиком загрузить в память. Если можно загрузить в память, например файлы размером в несколько десятков мегабайт, то проще и наверное быстрее так и сделать, вот как в варианте с TBytes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:16 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
s62Bellic, MMF полезен, в частности, если файлы большие, так что их проблематично целиком загрузить в память. Если можно загрузить в память, например файлы размером в несколько десятков мегабайт, то проще и наверное быстрее так и сделать, вот как в варианте с TBytes. Парни, погодите чуток! Поздно уже "пить Боржоми"! - Код почти готов, затыка малюсенькая осталась! Щас курну и побе Ж у ее!..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:27 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
ПомоЖите... голову сломал уже..((( Код: pascal 1. 2. 3. Как теперь считать байт ISimvol по этому Поинтеру, чтоб позже сделать инкремент: Код: pascal 1. Короче - запутался!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:51 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Все! Разобрался сам...))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:03 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Mmf быстрее не будет. 10 мб это в современных условиях немного даже на телефоно-планшетах. В целях удобства и простоты, лучше чтением в TBytes и ограничится. Смотри остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:07 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
На основе "Memory-Mapped File" получился следующий код: Код: 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. Так что MMF не показал достойных результатов к сожалению! Зато я малость набил руку!... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:12 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
makhaonMmf быстрее не будет. 10 мб это в современных условиях немного даже на телефоно-планшетах. В целях удобства и простоты, лучше чтением в TBytes и ограничится. Смотри остальное.Если это ответ на моё сообщение, то я про это и написал, м.б. не совсем внятно)), что если можно загрузить в память (например если файлы несколько десятков Мб), то проще и (наверное) быстрее так и сделать - загрузить в память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:17 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Времечко бежит и скоро нужно уже садиться за руль... Вернусь всеж к одному месту в реальной Процедуре: Код: pascal 1. В строковой переменной SStroka происходит таким образом "накопление" нужных мне данных. Конкатенация тут мне полезна по двум причинам: 1 . Не надо следить за указателем. 2 . Строка - есть Массив и к тому же - "безразмерный"! Вторая причина - пожалуй самая главная ! - Нет необходимости объявлять размер заранее! P.S. Думаю мои эксперименты будут полезны не только мне как получение опыта, но и другим новичкам, кто позже найдет эту тему!? Всем, огромное спасибо! - В том числе и за "молчание", позволившее самому до всего "допетрить"!... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 15:47 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Bellic... Время выполнения все того же Тестового цикла: 0,724 секунды! Так что MMF не показал достойных результатов к сожалению! Принципиальное отличие между MMF и варианта на основе TBytes в следующих строках: Код: pascal 1. 2. 3. Обработка цикла TBytes производится только в памяти, а цикл в MMF - буферизированное чтение с диска. Буферезацией занимается Windows. Так что сравнение не совсем корректное. BellicВернусь всеж к одному месту в реальной Процедуре: Код: pascal 1. В строковой переменной SStroka происходит таким образом "накопление" нужных мне данных.При большом объеме даных и частом вызове есть вероятность фрагментации памяти. Для уменьшения фрагментации можно использовать массив по аналогии с TList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:48 |
|
||
|
Оптимизация побайтового чтения и сравнения двух бинарных файлов
|
|||
|---|---|---|---|
|
#18+
Freedoom, тут было сравнение времени для использования в реальной процедуре, а не чисто дле теории! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 17:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39576176&tid=2041399]: |
0ms |
get settings: |
7ms |
get forum list: |
7ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
373ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 643ms |

| 0 / 0 |
