Сдвиг файла

Тема в разделе "WASM.A&O", создана пользователем Asvald, 15 май 2010.

  1. Asvald

    Asvald New Member

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

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Asvald
    кошмар! Проги кодов ридасоломона типа QuickPAR еще как то лечат байтовые сдвиги, но вот битовые - это пипец однозначно...
     
  3. slavanap

    slavanap Вячеслав

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

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494