О сравнении бинарных файлов, бОльших 4Gb

Тема в разделе "WASM.WIN32", создана пользователем kero, 16 май 2017.

  1. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    последняя редакция fcdd:
     

    Вложения:

    • fcdd-5.zip
      Размер файла:
      37,3 КБ
      Просмотров:
      409
    • ext_cmpr_1.zip
      Размер файла:
      548,9 КБ
      Просмотров:
      426
    • ext_cmpr_2.zip
      Размер файла:
      720,1 КБ
      Просмотров:
      408
  2. Полный 30h

    Полный 30h Member

    Публикаций:
    0
    Регистрация:
    7 дек 2016
    Сообщения:
    36
    Адрес:
    Институт Мичурина
    Проецирование файла на память не более чем удобство для программиста. Для больших файлов никакого прироста в скорости она не даёт. Скорее даже наоборот. Поскольку маленький файл сразу грузится в память, при том в реальную железную и далее будет обрабатываться со скоростью её тайминга. А вот с большим объемом наступает #опа. Большая часть файла скорее всего будет загружена в память виртуальную т.е. на тот же жесткий диск. И на круг получается что чтобы прочитать файл с диска он сначала перезаписывается всё на тот же диск, а уже потом начинает читаться. Я с этим столкнулся при попытке сортировки файла. Самый быстрый (на мой взгляд) способ это выделение буфера в оперативной памяти, достаточно большого объема для уменьшения числа проходов, но достаточно маленький, для того что бы система выделяла под него часть реальной памяти, а не начинала запихивать хвост в виртуальный блок созданный на диске.
     
  3. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    1. Используйте асинхронное чтение: пока вы сравниваете большой кусок памяти, другой большой кусок подгружается потоком в фоне с диска.
    2. Читайте большими блоками. Для жёсткого диска поиск дорожки и сектора (рандомный доступ) намного дороже линейного чтения. Опыт показывает, что чтение 64М-блоками по времени занимает чуть больше, чем 1М-блоками при условии, что файл не сильно фрагментирован.
    3. mmap здесь не нужен.
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Недавно наткнулся на файлы, которые собирался сюда добавить, но тогда, в 2017, случились проблемы с организмом и топик оборвался... Ну и решил все-таки выложить, что собирался, - хотя бы из уважения к автору "010 Editor" Graeme Sweet, который в ответ на мой вопрос - написал скрипт "Compare.1sc" !
    Кстати, изменения в интерфейсе fcdd, помимо уточнений и упрощений, связаны и с особенностями этого скрипта:
    I've attached a script which should set the error code after the compare.
    You can copy this script to the '010 Templates' directory and then you should be able to use it like this:
    010editor -script:Compare.1sc: (<file1>,<file2>)
    To quit after running the script use:
    010editor -script:Compare.1sc: (<file1>,<file2>) -exit
    Note that if you pass a file path to <file1> or <file2> you have to use '\\' instead of '\'.
    For example:
    010editor -script:Compare.1sc: (c:\\temp\\profile4.dat,c:\\temp\\profile4.dat) -exit
    The '\\' is what we were investigating and we may try to remove this requirement in the future.
    Let us know if you have any trouble getting it to work.
    Graeme
    Отсюда и добавленный переключатель "\\" .
     

    Вложения:

    • fcdd.zip
      Размер файла:
      38,3 КБ
      Просмотров:
      405
    • cmpr_ext.zip
      Размер файла:
      1,7 МБ
      Просмотров:
      329
    • fcdd_010ed.png
      fcdd_010ed.png
      Размер файла:
      30,6 КБ
      Просмотров:
      648
    Последнее редактирование модератором: 29 мар 2019