![]() |
1
2
如果您使用的是支持它的平台,那么可以使用mmap()。 文件的分页也是一种可能,但请记住尽可能大的缓冲区以减少IO开销,并注意两个页面的边界之间(假设一个字符串匹配,但被页面边界分割) 或者,我建议您构建某种索引,并使用该索引来限制搜索。国民党的搜索不是特别有效。当然,这取决于文件的性质,文件的创建方式, 等。 |
![]() |
2
2
对于文件访问,我建议使用内存映射文件以避免数据复制。它在Unix机器上是微不足道的。如果不能在一个块中分配文件映射,则可能需要将其拆分为较小的块。如果您感兴趣,我可以提供一些代码。 对于搜索,我建议使用 Boyer More search algorithm . |
![]() |
3
1
直接在文件中搜索会非常慢,使用缓冲将提供更好的性能。但是请注意,你的缓冲区必须比你搜索的要大(
|
![]() |
4
1
最好的方法是分块阅读并搜索。您应该将块大小设为一个参数,这样您就可以试验什么能提供最佳性能。 但是,尝试以某种方式索引文件通常更有效,这样您就不必对整个文件进行线性搜索。例如,kmp是一个字符串搜索算法——你只是在寻找一个单词的出现吗?然后您可以创建一个哈希表(磁盘上)的单词及其在文件中的位置,并有非常有效的搜索。 |
|
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
![]() |
Sab · 输入为空时,搜索结果元素未隐藏 3 年前 |
![]() |
Chaz Cosby · 如何添加更改api地址的搜索栏? 3 年前 |
![]() |
user3669555 · 多维数组搜索部分单词或短语并移除键 6 年前 |
![]() |
Yohan · 根据用户输入显示或隐藏div 6 年前 |
|
Shasocais · Prolog,基本情况失败的问题 7 年前 |
|
Den · C#在列表框中搜索项目1 7 年前 |
![]() |
Eugene Barsky · Perl 6中多针的索引 7 年前 |