gpt4 book ai didi

C++ 转换优化

转载 作者:IT老高 更新时间:2023-10-28 23:18:25 25 4
gpt4 key购买 nike

我想问是否有比逐个遍历所有值并将它们除以 32768 更快的方法来进行音频转换。

void CAudioDataItem::Convert(const vector<int>&uIntegers, vector<double> &uDoubles)
{
for ( int i = 0; i <=uIntegers.size()-1;i++)
{
uDoubles[i] = uIntegers[i] / 32768.0;
}
}

我的方法效果很好,但可能会更快。但是我没有找到任何方法来加快它。

感谢您的帮助!

最佳答案

如果您的数组足够大,那么并行化这个 for 循环可能是值得的。 OpenMP 的 parallel for声明是我会使用的。
函数将是:

    void CAudioDataItem::Convert(const vector<int>&uIntegers, vector<double> &uDoubles)
{
#pragma omp parallel for
for (int i = 0; i < uIntegers.size(); i++)
{
uDoubles[i] = uIntegers[i] / 32768.0;
}
}

使用 gcc 时,您需要在编译要使用的 pragma 时传递 -fopenmp,在 MSVC 上它是 /openmp。由于生成线程具有明显的开销,因此只有在处理大型数组 YMMV 时才会更快。

关于C++ 转换优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com