UPDATE彻底改变了答案!
我有大量的日志行,我需要解析每一行(所以效率非常重要)。
请注意,在这种情况下,C++ 在效率方面不会有太大帮助。不要误以为仅仅因为你在 C++ 中有一个快速解析代码,你的程序就会有高性能!
你在这里真正需要的效率不是解析代码的“机器码”级别的性能,而是整体算法级别的性能。
想想你想做什么。
你有一个巨大的文本文件,你想把每一行转换成一个数据结构,
无论您使用什么语言,在内存中存储巨大的数据结构都是非常低效的!
您需要做的是一次“获取”一行,将其转换为数据结构并进行处理,然后,只有在您完成数据结构后,您才去获取下一行并转换它到一个数据结构,处理它,然后重复。
如果你这样做,你已经解决了主要瓶颈。
对于解析文本行,您的数据格式似乎非常简单,请查看我前段时间提出的类似问题:C++ string parsing (python style)
在您的情况下,我想您可以使用字符串流,并使用>>
运算符来读取行中的下一个“事物”。
请参阅此答案以获取示例代码。
或者,(我不想删除这部分!!)如果你可以用 python 编写它,它会简单得多。我不知道你的情况(看来你被 C++ 困住了),但仍然
查看此演示文稿以使用 python 生成器表达式有效地完成这些任务:http ://www.dabeaz.com/generators/Generators.pdf
值得一读。在幻灯片 31 中,他处理的内容似乎与您正在尝试做的事情非常相似。
它至少会给你一些灵感。
它还非常强烈地表明,性能不是通过特定的字符串解析代码获得的,而是通过整体算法获得的。