我最近在C ++中构建了一个Huffman编码的CPU实现。我还在CUDA中构建了一个GPU版本以便比较时间,但是在测试CPU的时间时我遇到了一个问题:
当通过压缩大文件进行压力测试时,例如一个97mb文本文件,其中几乎每个字母都有字母和其他各种ascii字符,我的CPU实现在第一次执行时大约需要8.3秒。之后,时间显着下降到1.7秒。注意:我只计算CPU计算频率的时间,而不是字符串的编码和写入文件。
任何想法如何?我正在关闭所有文件指针,据我所知,不应该缓存任何内容。
请告诉我是否需要任何源代码,谢谢。
答案 0 :(得分:5)
第一次运行后,系统会缓存文件内容(并由所有进程共享),因此下一次运行实际上是从内存中读取文件。