你这个循环主要的计算时间是那个rand,这个循环本身占用时间微乎其微。 X- p. w4 O0 K0 H; N
你的空循环,如果是现在的代码,编译器很可能完全不生成对应代码,因为没有任何输出或者修改变量,所以可以看到时间都是202S。你可以认为啥都不干的时间就是那么多。- N3 @: {3 l% P7 U
与此对应用数组(指针)花了2S. W+ k x2 k1 m+ R5 r
你用vec1[jj]*vec2[jj]理论上不应该差30多秒,这里很可能是你对vector的操作带来了内存操作,你可以试试把初始化挪出循环然后再比较,理论上vector的随机访问和数组应该几乎没什么区别。
雷达 发表于 2022-9-24 23:54 w7 M8 I+ m1 U, D. j. Bvoid xcorr(comp* outcomp, comp* A, int lenA, comp* B, int lenB)9 |, P: G, k. E) J7 Z- A6 n
{ 8 m; i( e6 O f \ comp temp, xtimesy;
2 Z, L" C5 Z0 m9 ?$ \4 g t6 G: U
我有些迷糊,这样的code,难道不就应该时间差很多吗?也做了个简单的实验,你看看我做的有错吗1 X7 i7 \3 d' S9 m* t {