大多数学习过C的C ++用户即使在用C ++编写代码时也喜欢使用printf/ scanf系列功能。尽管我承认我发现接口的方式更好(尤其是POSIX格式和本地化),但似乎最令人担忧的是性能。看一下这个问题:如何加快逐行读取文件的速度似乎最好的答案是使用fscanf,并且C ++ ifstream始终慢2-3倍。我认为,如果我们可以编译一个“技巧”存储库来改善IOStreams的性能,那将是很棒的,什么可行,什么不可行。要考虑的要点缓冲(rdbuf()->pubsetbuf(buffer, size))同步(std::ios_base::sync_with_stdio)语言环境处理(我们可以使用精简的语言环境还是将其完全删除?)当然,欢迎使用其他方法。注意:提到了Dietmar Kuhl的“新”实现,但是我无法找到有关它的许多细节。先前的参考文献似乎是无效的链接。
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
有趣的是,C程序员在编写C ++时更喜欢printf,因为我看到除了使用cout和iostream编写输出以外,还有很多C语言代码。
通过filebuf直接使用,使用通常可以获得更好的性能(Scott Meyers在Effective STL中提到了这一点),但是直接使用filebuf的文档相对较少,大多数开发人员更喜欢std::getline在大多数情况下更简单。
关于区域设置,如果创建构面,则通常通过一次使用所有构面创建一个区域设置,将其存储并保存到所使用的每个流中,通常会获得更好的性能。
我最近确实在这里看到了另一个主题,因此这几乎是重复的。
- 3 回答
- 0 关注
- 362 浏览
添加回答
举报
0/150
提交
取消