小编Mic*_*l B的帖子

是否可以使用复杂度为 O(1) 的 openMP 初始化向量?(C++)

我正在尝试使用 openMP 在结构中并行化一些向量函数。虽然它适用于我的大多数实现,但我发现由于 for 的构造函数std::vector<>具有线性复杂性,我无法获得更好的性能,而是获得比按顺序进行初始化更糟糕的东西。

这是初始化程序之一

         /**
         * @brief Construct a new constant parallel Vector object with a given value constantEntry
         * 
         * @param dim 
         * @param constantEntry 
         */
        parallelVector(const int dim, const double constantEntry){
            dimension = dim;
            values = std::vector<double>(dimension);

            #pragma omp parallel for schedule(static)
            for (int i=0 ; i<dimension; i++){
                values[i] = constantEntry;
            }
        }
Run Code Online (Sandbox Code Playgroud)

std::vector<>文件说,我可以用分配器得到O(1)复杂,但因为我不是太熟悉他们,我想知道如果有事情和独特的指针是可能的呢?

c++ struct vector openmp

2
推荐指数
1
解决办法
67
查看次数

不使用函数来提高速度?(C++)

我正在为班级的比赛编写程序。它已经很好用了,现在我正在努力让它尽可能快。我的问题是 - 与制作用户定义的函数相比,只是粘贴函数返回的内容,无论我想在哪里使用它,都可以加速我的程序吗?我知道函数调用会导致内存跳转,那么这样做是否可以显着加速我的代码?在这种情况下,我不关心可读性

例如。而不是这样做

while(something){
y = function();
}
double function(){
return f(x);
}
Run Code Online (Sandbox Code Playgroud)

我这样做

while(something){
y = f(x);
}
Run Code Online (Sandbox Code Playgroud)

我已经做了一些事情,比如通过引用传递结构、避免强制转换、使用移位操作、使用诸如 ++i 之类的东西来加快执行时间,我希望获得一点优势。

c++ performance execution-time

0
推荐指数
1
解决办法
97
查看次数

标签 统计

c++ ×2

execution-time ×1

openmp ×1

performance ×1

struct ×1

vector ×1