Я недавно построил реализацию ЦП Huffman в C++. Я также построил версию графического процессора в CUDA для сравнения времени, но я столкнулся с проблемой при тестировании времени процессора:CPU huffman сжатие быстрее после первого выполнения?
При стресс-тестировании путем сжатия больших файлов, например, текстового файла длиной 97 МБ с почти каждая буква в алфавите и различные другие символы ascii, моя реализация процессора займет примерно 8,3 секунды при первом запуске. После этого время значительно падает до 1,7 секунды. ПРИМЕЧАНИЕ. Я использую только подсчет частоты процессора, а не кодировку строки и запись в файл.
Любые идеи, как это могло быть? Я закрываю все указатели на файлы и не должен кэшировать что-либо, насколько я знаю.
Дайте мне знать, если какой-либо исходный код необходим, спасибо.
Нужно ли использовать тайминги, когда файл запускается первым, или когда он кэшируется системой и считывается из памяти? Если первый, как я могу убедиться, что я выполняю прогон, и он не читается из памяти? – SuperXero
@superXero: У меня есть программа в моей системе, похожей на «try {while (true) new char [1000];} catch (...) {return 0;}», которая заставит систему сбросить все буферы, Можно. Обычно люди используют второй тайм. Это проще и надежнее. –
Я предполагаю, что вы действительно хотите, это время, используемое вашим алгоритмом без времени, используемого операциями ввода-вывода. Так что, если бы я был вами, я буду читать весь файл в памяти, записать время начала, запустить алгоритм с содержимым файла в памяти, а затем записать время окончания. – BlueWanderer