Приветствую всех, хотелось бы услышать мнение людей по поводу реализации побитового сдвига файла, например, у нас есть файл размером до нескольких гигабайт, и нужно его содержимое сдвинуть вправо или влево на несколько бит (пусть не больше 7). Я так думаю это реализовать через поблочное чтение ReadFile, например блоками по 2 Мб, сдвигаем блок и записываем его в выходной файл. Следующий момент это сдвиг блока в памяти, я пока думаю два пути, если у нас есть SSE на машине, то читать в xmm регистр по 16 байт, сдвигать его и записывать в выходной буффер (учитывая что с края зашли 0, так как в SSE я не нашел аналога shrd/shld), если sse нету, то через shrd/shld обрабатывать по дворду. У кого есть какие замечания, идеи, или советы по реализации, возможно все что мне пришло в голову совершенно не оптимально, а скорость работы основная цель, после правильности ).
Asvald кошмар! Проги кодов ридасоломона типа QuickPAR еще как то лечат байтовые сдвиги, но вот битовые - это пипец однозначно...
+ отключить кэширование файлов (у CreateFile флаг есть, т.к. sdk нет под рукой не вспомню название). -> читать блоки размером, который кратен 4096 байт.
Asvald Скорость самого сдвига для тебя совсем не принципиальна, поскольку её будут определять операции с диском их и оптимизируй