为了账号安全,请及时绑定邮箱和手机立即绑定

如何使IOStream表现更好?

如何使IOStream表现更好?

C++
qq_花开花谢_0 2019-11-07 10:33:56
大多数学习过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在大多数情况下更简单。


关于区域设置,如果创建构面,则通常通过一次使用所有构面创建一个区域设置,将其存储并保存到所使用的每个流中,通常会获得更好的性能。


我最近确实在这里看到了另一个主题,因此这几乎是重复的。


查看完整回答
反对 回复 2019-11-07
  • 3 回答
  • 0 关注
  • 362 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信