ein schönen guten Tag ich habe mich auf pthreads gestürzt und habe mal so ein kleines Programmchen geschrieben um die Performance unterschied zwischen singlethread Programm und multithread Programm zu sehen .
Seltsamer weise kriege ich höhere Zeiten beim Multithreading woran kann dass liegen ?
ich poste mal den code
Seltsamer weise kriege ich höhere Zeiten beim Multithreading woran kann dass liegen ?
ich poste mal den code
Code:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
/* 100000 Elemente */
#define MAX 50000
#define MIN 50000
#include <time.h>
/* ein Array von großen zu kleinen Werten */
int test_array1[MAX];
int test_array2[MIN];
/* in umgekehrter Reihenfolge erstellen */
// Thread 1
static void *bubble1(void* val) {
static int in, elem=MAX;
printf("Thread bubble1() wurde gestartet\n");
while(elem--)
for(in = 1; in <= elem; in++);
printf("Thread bubble1() wurde beendet\n");
// Der Rückgabewert interessiert uns nicht.
printf("durch");
return NULL;
}
// Thread 2
static void *bubble2(void* val) {
static int i, elemente=MIN;
printf("Thread bubble2() wurde gestartet\n");
while(elemente--)
for(i = 1; i <= elemente; i++);
printf("Thread bubble2() wurde beendet\n");
// Der Rückgabewert interessiert uns nicht.
return NULL;
}
int main (void) {
printf("Haupt-Thread main() wurde gestartet\n");
int z ;
printf("\nProgramm ohne Threads also Singlecore 0 Eingabe sonst willkürlich \n");
scanf("%d",&z);
int start, ende;
start=clock();
if(z==0){
bubble1(NULL);
bubble2(NULL);
}else{
// Thread 1 erzeugen
pthread_create( &thread1, NULL, bubble1, NULL );
// Thread 2 erzeugen
pthread_create( &thread2, NULL, bubble2, NULL );
// Main-Thread wartet auf beide Threads.
pthread_join( thread1, NULL );
pthread_join( thread2, NULL );
}
ende=clock();
printf("gemessene Zeit =%.3f ",(float)(ende-start)/CLOCKS_PER_SEC);
printf("\nHaupt-Thread main() wurde beendet\n");
return 0;
}
Zuletzt bearbeitet: