小编Ant*_* R.的帖子

pthread 和 printf 的 C 性能都很差

我正在使用大型数组测试 Linux 的 ac 代码以测量线程性能,当线程增加到最大内核(Intel 4770 为 8 个)时,应用程序可以很好地扩展,但这仅适用于我的代码的纯数学部分。

如果我为结果数组添加 printf 部分,那么即使重定向到文件,时间也会变得太大,从几秒到几分钟,而当 printf 这些数组应该只添加几秒时。

代码:

(gcc 7.5.0-Ubuntu 18.04)

没有 printf 循环:

gcc -O3 -m64 exp_multi.c -pthread -lm 
Run Code Online (Sandbox Code Playgroud)

使用 printf 循环:

gcc -DPRINT_ARRAY -O3 -m64 exp_multi.c -pthread -lm
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <pthread.h>
#define MAXSIZE 1000000
#define REIT 100000
#define XXX -5
#define num_threads 8
static double xv[MAXSIZE];
static double yv[MAXSIZE];

/*    gcc -O3 -m64 exp_multi.c -pthread -lm    */


void* run(void *received_Val){
    int single_val = *((int *) received_Val); …
Run Code Online (Sandbox Code Playgroud)

c performance multithreading pthreads

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

标签 统计

c ×1

multithreading ×1

performance ×1

pthreads ×1