当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?
我开始研究IT,现在我和朋友讨论这段代码是否效率低下.
// const char *pName
// char *m_pName = nullptr;
for (int i = 0; i < strlen(pName); i++)
m_pName[i] = pName[i];
Run Code Online (Sandbox Code Playgroud)
他声称例如memcopy会像上面的for循环那样做.我不知道这是不是真的,我不相信.
如果有更有效的方法或者效率低下,请告诉我原因!
提前致谢!
假设我有一个循环,可以对数组做一些数学运算x。是在每次迭代中在循环内分配一个临时double还是更好,还是应该array[i]每次都使用?
更好的是,我的意思是使用C ++在性能方面。我想知道C ++是否破坏了某些矢量化或现金优化?
另外,如果我使用此数组调用函数,并且可能需要多次使用函数值,该怎么办,所以通常对函数也是如此。我认为这比多次调用该函数要好。
如果循环使用怎么样omp parallel,我认为这应该是安全的,正确的?
for(int i=0; i<N; i++){
double xi = X[i];
double fi = f(xi);
t[i] = xi*xi + fi + xi/fi;
}
Run Code Online (Sandbox Code Playgroud)