Reputation: 2757
hey there i'm trying to calculate execution time of a simple multithreaded programme on UBUNTU. despite of i researched and used various methods, i always get 0.0000 value. here is my simple code
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <time.h>
clock_t startm, stopm;
#define START if ( (startm = clock()) == -1) {printf("Error calling clock");exit(1);}
#define STOP if ( (stopm = clock()) == -1) {printf("Error calling clock");exit(1);}
#define PRINTTIME printf( "%6.9f seconds used by the processor.\n", ((double)stopm-startm)/CLOCKS_PER_SEC);
void* thread_function(int);
void function();
int total=0;
int counter;
pthread_mutex_t mutex1=PTHREAD_MUTEX_INITIALIZER;
int main(int argc, char* argv[]) {
START
counter = atoi(argv[1]);
function();
STOP
PRINTTIME
return;
}
void function(){
int i;
pthread_t t_array[counter];
for(i=0; i<counter; i++){
pthread_create(&t_array[i], NULL, thread_function, i);
}
for(i=0; i<counter; i++){
pthread_join(t_array[i],NULL);
}
printf("Total = %d\n", total);
}
void* thread_function(int index){
pthread_mutex_lock( &mutex1 );
printf("Index : %d\n", index);
total++;
usleep(100000);
pthread_mutex_unlock( &mutex1 );
}
i will appreciate if you can help and thanks anyway.
Upvotes: 0
Views: 1268
Reputation: 16399
It looks like you want to time a function in code. Consider gettimeofday()
#include <sys/types.h>
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
double now(void)
{
struct timeval tv;
double retval=0;
gettimeofday(&tv, NULL);
retval=tv.tv_usec;
retval+= (double)tv.tv_usecs / 1000000.;
return retval;
}
int main()
{
double start=now();
// run code here
printf("elapsed time = %.6f"\n", now() - start);
return 0;
}|
Upvotes: 1