|
|
1
4
我认为你首先要关心的应该是浮点数有多大。它们是浮动的还是可以有双重数据?传统的(c)方法是将fscanf与格式说明符一起用于float,而afaik则相当快。iostreams确实在解析数据方面增加了一点开销,但这是可以忽略的。为了简洁起见,我建议您使用iostreams(更不用说您将使用的通常流特性)。 另外,我认为如果你能在你的问题中加上相关的数字,比如说,你试图解析的文件有多大,这将真正有助于社区的发展。这是一个小内存占用环境(像嵌入式系统)。 |
|
|
2
1
这一切都是基于操作系统,以及C和C++标准库的选择。 IfStand慢的时代已经过去了,但是,处理C++泛型接口可能会有一些开销。 如果字符串已经在内存中,那么atof/strtod可能是处理它的最快方法。 最后,任何试图将文件读入内存的尝试都可能是徒劳的。现代操作系统通常会遇到阻碍(尤其是当文件大于RAM时,由于系统会将(已经存储在磁盘上的)数据视为可交换数据,所以最终会交换代码)。 如果您真的需要非常快(我认为它唯一有用的地方是基于hpc和map/reduce的方法),请尝试mmap(linux/unix)或mapviewoffile以最合理的方法将文件预取到虚拟内存中,然后使用atof+自定义字符串处理。 如果这种游戏的文件组织得很好,那么你甚至可以使用mmap和指针来进行奇怪的转换,并且可以进行多线程转换。如果您有超过10GB的浮点数要定期转换,听起来像是一个有趣的练习。 |
|
|
3
0
最快的方法可能是使用ifstream,但也可以使用fscanf。如果您有一个特定的平台,您可以手动将文件加载到内存中,并从中手动解析浮动。 |
|
|
David542 · 任何语言都允许函数名中有空格吗? 1 年前 |
|
Andy · 将LENGTH OF移动到COMP字段解析失败 2 年前 |
|
|
Chris Geo · 如何找到LR0项目的FOLLOW集合? 2 年前 |
|
|
Yash Singhal · 在reactjs中解析Pdf中的文本 2 年前 |
|
|
i33SoDA · 如何将逗号分隔的数字字符串解析为int数组? 2 年前 |