boostspirit2:有没有办法知道解析器的进度百分比是多少
boost spirit 2 : is there a way to know what is the parser progression percentage?
我成功地将一个pgn文件解析成了几个游戏,这主要归功于这个论坛。
然而,由于我要处理的文件有很多游戏,在我最近的电脑上,这个过程可能需要两分钟。这就是为什么我想使用这个解析器在GUI应用程序上设置进度条的动画。
我认为最简单的方法是"问"spirit他已经处理了多少角色,还有多少角色。(或者剩余和已处理的行数)。
有可能吗?如果是,我需要如何修改解析器文件才能获得这个比率?
您可以使用line_pos_iterator
,也可能使用存储库中的iter_pos
原语。
-
(@GuyGrier:)没有办法知道回溯的数量(否则,一开始就不需要回溯)。因此,最好的做法是接受这样一种情况,即您获得的某种"平均吞吐量"有时可能有点突发或滞后。如果您的语法不平衡,以至于这些变体不仅仅是噪音,那么您应该首先考虑修复语法/解析器定义。
-
为了解决不知道流长度的"问题",除了不将其作为流之外,您无法解决它。
我建议进行记忆映射。您可以使用
boost::iostreams
、boost::interprocess
或仅使用mmap
中的设施。
我估计我至少有3个答案展示了这个答案中提到的每一种技术,所以我只想在这个网站上搜索它们。
相关文章:
- 复制列表初始化的隐式转换的等级是多少
- while循环中while循环的时间复杂度是多少
- 如何检查一个c++字符串中有多少相同的字符/数字
- C++有多少类型的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 在条件变量中触发错误信号的频率是多少
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 函数的时间复杂度是多少?
- 必须为 C++20 协程帧保留多少内存?
- 对于四轴飞行器,PID中I控制器的理想值应该是多少
- C++,数组有多少个地址?
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 在 Linux 中存储区域设置名称的缓冲区大小应该是多少?
- 在内存不足之前,我可以声明多少个 const 变量?
- 可以读入进程内存的最大块大小是多少?
- 如何在不知道C++中有多少可选参数的情况下在循环中使用va_arg?
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- C++中的类/函数模板占用了我的二进制文件的百分比是多少?
- boostspirit2:有没有办法知道解析器的进度百分比是多少