У меня есть две пары файлов; A1
, A2
, B1
, B2
; все одинакового размера. Я хочу, чтобы файл C
составлял байты из первого файла в каждой паре на основе сравнения одного и того же байта в соответствующем файле; в моем случае, эта специфическая функция: C[i] = (A1[i] < B1[i]) ? A2[i] : B2[i]
. Файлы находятся на порядок, я думаю, 16 мегабайт.Самый быстрый способ применить простую функцию к блокам памяти
Каков абсолютный самый быстрый способ сделать это? Каковы последующие узкие места в скорости, о которых я не знаю? Что изменится, когда у вас есть N пар входных файлов (но все же только один вывод)?
Примечание: Я знаю, что это зависит от процессора, но на данный момент я не знаю достаточно, чтобы задавать вопросы о зависимых от процессора вещах.
PS - Бонусные баллы, если вы можете порекомендовать, какие инструменты, среда и т. Д. Необходимы, чтобы начать работать с этим и на этом уровне.
PPS - Отметьте! Я не знаю достаточно, чтобы узнать, что еще нужно отметить этим вопросом.
В то время как 'сборка 'доставит вас к основным основным требованиям, которые иногда приравниваются к скорости, поскольку вы, кажется, начинаете с нуля, вы, вероятно, должны искать утилиты« Файл »или« Извлечь передачу нагрузки »(ETL), поскольку, вероятно, было написано ранее. –
Спасибо, что пытались помочь @FrankC., Но это не похоже на то, что мне нужно. Можете ли вы рассказать о том, почему вы думаете, что это поможет? – Narfanator
Основным фактором здесь является то, нужно ли читать файлы с диска/сети или они уже находятся в памяти. Если вам нужно их прочитать, просто напишите самый наивный цикл (в основном, что вы имеете в виду) на C++ (или вообще что-нибудь, может быть, даже javascript будет быстрее, чем дисковый ввод-вывод, хотя я сомневаюсь, C/C++/Java/C# являются безопасными) и оптимизировать часть чтения/записи файлов для использования буферов с разумным размером, а также самый быстрый доступный OS API для чтения/записи файлов. Поскольку это займет столько времени, что даже неоптимизированный цикл будет обрабатывать данные за долю времени ввода-вывода. – Ped7g