gpt4 book ai didi

c++ - Markov C++ 读取文件性能

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:38 24 4
gpt4 key购买 nike

我的第 2 个作业是 C++ 类,其中包括马尔可夫链。任务很简单,但我无法弄清楚从文件中读取字符时什么是最佳实现。

我有一个大约 300k 的文件。分配的规则之一是使用 Map 和 Vector 类。在 Map 中(键只是字符串),值将是 vector 。当我从文件中读取时,我需要开始收集 key 对。

例子:

File1.txt
1234567890
1234567890

如果选择 Markov k=3,我的 map 中应该有:

key     vector
123 -> 4
456 -> 7
789 -> 0
0/n1 -> 2
234 -> 5
567 -> 8
890 -> /n
/n -> NULL

教授的建议是逐个字符读取,所以我的算法如下

while (readchar != EOF){
tempstring += readchar
increment index
if index == Markovlevel {
get nextchar if =!EOF
insert nextchar value in vector
insert tempstring to Map and assign vector
unget char
}

}

我省略了一些其他细节。我的主要问题是,如果我有 318,000 个字符,我每次都会执行条件语句,这会大大降低我的计算机速度(全新的 MAC pro)。教授的示例程序在大约 5 秒内执行该文件。

我无法弄清楚从 C++ 文本文件中读取固定长度单词的最佳方法是什么。

谢谢!

最佳答案

重复读取文件会使程序变慢。

以 block 的形式读取文件,比如大小为 1024,放入缓冲区。然后根据分配的需要处理此缓冲区。重复下一个 block ,直到完成文件。

关于c++ - Markov C++ 读取文件性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com