相关疑难解决方法(0)

std :: vector reserve()和push_back()比resize()和数组索引更快,为什么?

我正在对一段代码进行快速性能测试

void ConvertToFloat( const std::vector< short >& audioBlock, 
                     std::vector< float >& out )
{
    const float rcpShortMax = 1.0f / (float)SHRT_MAX;
    out.resize( audioBlock.size() );
    for( size_t i = 0; i < audioBlock.size(); i++ )
    {
        out[i]  = (float)audioBlock[i] * rcpShortMax;
    }
}
Run Code Online (Sandbox Code Playgroud)

我很高兴原来非常天真的实现速度超过1毫秒来处理65536个音频样本.

然而,只是为了好玩,我尝试了以下

void ConvertToFloat( const std::vector< short >& audioBlock, 
                     std::vector< float >& out )
{
    const float rcpShortMax = 1.0f / (float)SHRT_MAX;
    out.reserve( audioBlock.size() );
    for( size_t i = 0; i < audioBlock.size(); i++ )
    {
        out.push_back( (float)audioBlock[i] …
Run Code Online (Sandbox Code Playgroud)

c++ optimization stl vector

38
推荐指数
2
解决办法
4万
查看次数

标签 统计

c++ ×1

optimization ×1

stl ×1

vector ×1