美团|C++中我们应该避免使用的代码
文章图片
文章图片
为什么我们应该避免使用std :: endl:
在使用cout时 , 通常使用std :: endl打印换行符 。 对于具有很少I / O操作的小型程序 , 这种做法是可以接受的 , 但是 , 如果I / O操作的数量增加了 , 那么程序的效率就会受到影响 。
std :: endl不仅会在流中添加换行符 , 还会在每次使用缓冲区时刷新缓冲区 。
我们实际上正在做这样的事情
缓冲区刷新是一项操作系统任务 。 每次刷新缓冲区时 , 都必须向OS发出请求 , 并且这些请求相对缓慢 。 此外 , 我们每次向流中写入内容时都不需要真正刷新缓冲区 , 因为缓冲区满时会自动刷新 。 在极少数情况下 , 我们确实需要执行刷新 , 我们可以使用cout.flush()或将std :: flush插入流中来显示指定操作 。
演示对性能的影响:
以下C ++程序演示了std :: endl的性能影响 。 我们一次使用std :: endl将100000个字符串写入两个文件 , 然后再次使用'\\ n' 。 在每种情况下 , 我们都会测量执行时间并打印这些时间
输出:(取决于机器)
从输出std :: endl可以看到 , 时间花费了将近一倍 。 在某些系统上 , 性能影响可能会更糟 。
- 我们是后浪|机器人,“乖乖听话”
- 分析|用数据量化方法透视不确定性世界
- 看看日本企业的食堂,再看看中国京东的食堂,网友:差距也太大了
- 开封市商务局与美团公司联合开展电子商务领域战略合作签约仪式暨白色污染治理倡议活动
- 精选了上百款高清壁纸,我们选出了这些电脑平板专属的壁纸
- 乔布斯离世9年,留给我们3句话,值得花30年践行
- C++核心准则?SF.10:避免依赖隐式包含的名称
- 图视绘 | 今天,我们为什么关注快递小哥
- 聚焦黑科技 我们距离真全息投影还有多远?
- EUV光刻胶再生变局,日本又有两家企业加入,我们需要加油了