小编Ein*_*sen的帖子

英特尔编译器的循环速度c

我很难理解为什么这个代码以英特尔编译器12以极快的速度运行,并且使用英特尔编译器16真的变慢了

#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
    int i,t;
    int n=10000000;
    int T=1000;
    time_t t1,t2;

    // double A[n],B[n],C[n];
    double *A = (double*) malloc (sizeof(double)*n);
    double *B = (double*) malloc (sizeof(double)*n);
    double *C = (double*) malloc (sizeof(double)*n);



    for (i=0;i<n;i++)
    {
       A[i]=1.0;
       B[i]=2.0;
    }
    t1=clock();

    for (t=0;t<T;t++)
       for (i=0;i<n;i++)
          C[i]=A[i]*B[i];

    t2=clock();
    double sum=0.0;
    for (i=0;i<n;i++) sum += C[i];
    printf("sum %f\n",sum);
    printf("time %f\n",(double)(t2-t1)/CLOCKS_PER_SEC);
}
Run Code Online (Sandbox Code Playgroud)
  • 英特尔编译器12:在沙桥上运行0.1秒; 英特尔编译器16:在沙桥上运行需要25秒

makefile:icc -O2 -o array array.c

c performance icc execution-time

3
推荐指数
1
解决办法
77
查看次数

标签 统计

c ×1

execution-time ×1

icc ×1

performance ×1