std::stringstream只适合作字符串格式化

本文探讨了std::stringstream在大量数据处理时效率较低的原因,并针对其内部实现机制提出改进方案,通过调整_M参数来提高数据写入速度。

std::stringstream要真的当流来使,太慢了,原因

 virtual streamsize xsputn(const _E *_S, streamsize _N)
  {streamsize _M, _Ns;
  for (_Ns = 0; 0 < _N; )
   if (pptr() != 0 && 0 < (_M = epptr() - pptr()))
    {if (_N < _M)
     _M = _N;
    _Tr::copy(pptr(), _S, _M);
    _S += _M, _Ns += _M, _N -= _M, pbump(_M); }
   else if (_Tr::eq_int_type(_Tr::eof(),
    overflow(_Tr::to_int_type(*_S))))
    break;
   else
    ++_S, ++_Ns, --_N;
  return (_Ns); }

如果能够使_M加大,就可以提高速度。
_M = epptr() - pptr();

就是这个家伙
_Fillch = _WIDEN(_E, ' ');
值为32。因此,当输入Stringstream的数据比较大时,循环量很大。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值