Сдвиг файла

Discussion in 'WASM.A&O' started by Asvald, May 15, 2010.

  1. Asvald

    Asvald New Member

    Blog Posts:
    0
    Joined:
    Sep 18, 2006
    Messages:
    58
    Приветствую всех, хотелось бы услышать мнение людей по поводу реализации побитового сдвига файла, например, у нас есть файл размером до нескольких гигабайт, и нужно его содержимое сдвинуть вправо или влево на несколько бит (пусть не больше 7).
    Я так думаю это реализовать через поблочное чтение ReadFile, например блоками по 2 Мб, сдвигаем блок и записываем его в выходной файл. Следующий момент это сдвиг блока в памяти, я пока думаю два пути, если у нас есть SSE на машине, то читать в xmm регистр по 16 байт, сдвигать его и записывать в выходной буффер (учитывая что с края зашли 0, так как в SSE я не нашел аналога shrd/shld), если sse нету, то через shrd/shld обрабатывать по дворду.
    У кого есть какие замечания, идеи, или советы по реализации, возможно все что мне пришло в голову совершенно не оптимально, а скорость работы основная цель, после правильности ).
     
  2. persicum

    persicum New Member

    Blog Posts:
    0
    Joined:
    Feb 2, 2007
    Messages:
    947
    Asvald
    кошмар! Проги кодов ридасоломона типа QuickPAR еще как то лечат байтовые сдвиги, но вот битовые - это пипец однозначно...
     
  3. slavanap

    slavanap Вячеслав

    Blog Posts:
    0
    Joined:
    Sep 10, 2008
    Messages:
    300
    Location:
    Смоленск, Россия
    +
    отключить кэширование файлов (у CreateFile флаг есть, т.к. sdk нет под рукой не вспомню название). ->
    читать блоки размером, который кратен 4096 байт.
     
  4. Y_Mur

    Y_Mur Active Member

    Blog Posts:
    0
    Joined:
    Sep 6, 2006
    Messages:
    2,494