gpt4 book ai didi

c - 为什么具有 int 变量的线程比具有 double 变量的线程更快?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:51 24 4
gpt4 key购买 nike

<分区>

我准备了两个示例代码来显示具有 int 变量的线程计算比具有 double 变量的线程更快。

两个代码之间的唯一区别是,第一个我只使用整数,而另一个我只使用 double 。

他们之间的时间差将近30%。

原因可能很简单/基本,但谁能告诉我可能的原因?

注意:请忽略代码逻辑,因为它只是为演示准备的。

使用整数:

    #include <stdio.h>
#include <pthread.h>

pthread_t pth1,pth2,pth3,pth4;

void *threadfunc1(void *parm)
{
int i,j,k,l;
j = 0;
k = 0;
l = 5;
for (i = 0; i < 5000000; i ++) {
j = k + 152;
k = j + 21;
l = j + k + (j * 5) + (k * 2) + (l * 3);
j = k + ((l + j)/ k) + j + k + (l / k);
j = 0;
k = 0;
l = 5;
}
printf("Completed Thread 1\n");
return NULL ;
}
void *threadfunc2(void *parm)
{
int i,j,k,l;
j = 0;
k = 0;
l = 5;
for (i = 0; i < 5000000; i ++) {
j = k + 152;
k = j + 21;
l = j + k + (j * 5) + (k * 2) + (l * 3);
j = k + ((l + j)/ k) + j + k + (l / k);
j = 0;
k = 0;
l = 5;
}
printf("Completed Thread 2\n");
return NULL ;
}


int main () {
pthread_create(&pth1, NULL, threadfunc1, "foo");
pthread_create(&pth2, NULL, threadfunc2, "foo");
pthread_join( pth1, NULL);
pthread_join( pth2, NULL);
return 1;
}

使用双:

    #include <stdio.h>
#include <pthread.h>

pthread_t pth1,pth2,pth3,pth4;

void *threadfunc1(void *parm)
{
double i,j,k,l;
j = 0;
k = 0;
l = 5;
for (i = 0; i < 5000000; i ++) {
j = k + 152;
k = j + 21;
l = j + k + (j * 5) + (k * 2) + (l * 3);
j = k + ((l + j)/ k) + j + k + (l / k);
j = 0;
k = 0;
l = 5;
}
printf("Completed Thread 1\n");
return NULL ;
}
void *threadfunc2(void *parm)
{
double i,j,k,l;
j = 0;
k = 0;
l = 5;
for (i = 0; i < 5000000; i ++) {
j = k + 152;
k = j + 21;
l = j + k + (j * 5) + (k * 2) + (l * 3);
j = k + ((l + j)/ k) + j + k + (l / k);
j = 0;
k = 0;
l = 5;
}
printf("Completed Thread 2\n");
return NULL ;
}


int main () {
pthread_create(&pth1, NULL, threadfunc1, "foo");
pthread_create(&pth2, NULL, threadfunc2, "foo");
pthread_join( pth1, NULL);
pthread_join( pth2, NULL);
return 1;
}

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