Benchmark
 All Classes Files Functions Variables Typedefs Macros
Macros | Functions
types.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "benchmark.h"

Macros

#define N   999
 

Functions

int primeInt (int nMax, timer *t, recorder *r)
 primeInt cherche les nMax premiers nombres premiers More...
 
int primeLong (long long int nMax, timer *t, recorder *r)
 primeLong cherche les nMax premiers nombres premiers More...
 
int primeFloat (int nMax, timer *t, recorder *r)
 primeFloat cherche les nMax premiers nombres premiers More...
 
int main (int argc, char *argv[])
 Enregistre les temps de calcul nécessaire à trouver des nombres premiers. More...
 

Macro Definition Documentation

#define N   999

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Enregistre les temps de calcul nécessaire à trouver des nombres premiers.

On calcul les N premiers nombres premiers par la méthode de brute force en utilisant 3 types différents: int ,long long int et float . A chaque fois les temps de calcul sont enregistrés dans des fichier .csv et afficher sous forme de graphe afin de permettre une lecture et comparaison facile de ceus là.

177  {
178 
179  timer *t = timer_alloc();
180  recorder *int_rec = recorder_alloc("int.csv");
181  recorder *long_rec = recorder_alloc("long.csv");
182  recorder *float_rec = recorder_alloc("float.csv");
183  // on init tous les `recorders` et le timer
184 
185  primeInt(N,t,int_rec);
186  primeLong(N,t,long_rec);
187  primeFloat(N,t,float_rec);
188  // on lance les tests
189 
190  recorder_free(int_rec);
191  recorder_free(long_rec);
192  recorder_free(float_rec);
193  timer_free(t);
194  // on free toutes nos structures
195 
196  return 0;
197 }
int primeLong(long long int nMax, timer *t, recorder *r)
primeLong cherche les nMax premiers nombres premiers
Definition: types.c:91
void timer_free(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:172
recorder écrit les temps dans un fichier .csv
Definition: benchmark.c:208
timer permet de mesurer le temps écoulé entre deux moments
Definition: benchmark.c:43
timer * t
Definition: memfork.c:25
#define N
Definition: types.c:13
recorder * recorder_alloc(char *filename)
Alloue un recorder
Definition: benchmark.c:219
void recorder_free(recorder *rec)
Libère toutes les resources utilisées par rec
Definition: benchmark.c:263
timer * timer_alloc()
Alloue un timer
Definition: benchmark.c:63
int primeInt(int nMax, timer *t, recorder *r)
primeInt cherche les nMax premiers nombres premiers
Definition: types.c:41
int primeFloat(int nMax, timer *t, recorder *r)
primeFloat cherche les nMax premiers nombres premiers
Definition: types.c:137
int primeFloat ( int  nMax,
timer t,
recorder r 
)

primeFloat cherche les nMax premiers nombres premiers

Parameters
nMaxDéfini combien de nombres premiers on cherche
tLe temps dans lequel on stoque le temps de début
rSauvegarde le temps dans un fichier .csv

Cherche les nMax premiers nombres premiers par la methode de brute force. Utilise exclusivement des float pour le calcul. A la fin du calcul sauvegarde le temps écoulé dans un fichier .csv en utilisant un recorder .

137  {
138  float count, i = 3, c;
139 
140  start_timer(t);
141 
142  for (count = 2; count <= nMax; ) {
143  for (c = 2; c <= i ; c++) {
144  if (fmod(i,c) == 0.0) {
145  break;
146  }
147  }
148  if (c == i) {
149  count ++;
150  if (fmod(count,50.0) == 0.0){
151  write_record_n(r,count,stop_timer(t),nMax);
152  }
153  }
154  i++;
155  }
156  return 0;
157 }
void write_record_n(recorder *rec, long int x, long int time, long n)
Comme write_record mais divise time par n après avoir retiré l'overhead
Definition: benchmark.c:253
int i
Definition: mutsem.c:43
void start_timer(timer *t)
Stoque le temps actuel comme début de la mesure dans t
Definition: benchmark.c:87
long int stop_timer(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:133
int primeInt ( int  nMax,
timer t,
recorder r 
)

primeInt cherche les nMax premiers nombres premiers

Parameters
nMaxDéfini combien de nombres premiers on cherche
tLe temps dans lequel on stoque le temps de début
rSauvegarde le temps dans un fichier .csv

Cherche les nMax premiers nombres premiers par la methode de brute force. Utilise exclusivement des int pour le calcul. A la fin du calcul sauvegarde le temps écoulé dans un fichier .csv en utilisant un recorder .

41  {
42  int count, i = 3, c;
43 
44  start_timer(t);
45  // on lance le timer
46 
47  for (count = 2; count <= nMax; ) {
48  for (c = 2; c <= i ; c++) {
49  if (i%c == 0) {
50  break;
51  // si le modulo == 0 => pas nombre premier => break
52  }
53  }
54  if (c == i) {
55  count ++;
56  if (count % 50 == 0){
57  write_record_n(r,count,stop_timer(t),nMax);
58  // on sauvegarde le temps pris pour trouver le `n ième` n.p.
59  }
60  }
61  i++;
62  }
63  return 0;
64 }
void write_record_n(recorder *rec, long int x, long int time, long n)
Comme write_record mais divise time par n après avoir retiré l'overhead
Definition: benchmark.c:253
int i
Definition: mutsem.c:43
void start_timer(timer *t)
Stoque le temps actuel comme début de la mesure dans t
Definition: benchmark.c:87
long int stop_timer(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:133
int primeLong ( long long int  nMax,
timer t,
recorder r 
)

primeLong cherche les nMax premiers nombres premiers

Parameters
nMaxDéfini combien de nombres premiers on cherche
tLe temps dans lequel on stoque le temps de début
rSauvegarde le temps dans un fichier .csv

Cherche les nMax premiers nombres premiers par la methode de brute force. Utilise exclusivement des long long int pour le calcul. A la fin du calcul sauvegarde le temps écoulé dans un fichier .csv en utilisant un recorder .

91  {
92  long long int count, i = 3, c;
93 
94  start_timer(t);
95 
96  for (count = 2; count <= nMax; ) {
97  for (c = 2; c <= i ; c++) {
98  if (i%c == 0) {
99  break;
100  }
101  }
102  if (c == i) {
103  count ++;
104  if (count % 50 == 0){
105  write_record_n(r,count,stop_timer(t),nMax);
106  }
107  }
108  i++;
109  }
110  return 0;
111 }
void write_record_n(recorder *rec, long int x, long int time, long n)
Comme write_record mais divise time par n après avoir retiré l'overhead
Definition: benchmark.c:253
int i
Definition: mutsem.c:43
void start_timer(timer *t)
Stoque le temps actuel comme début de la mesure dans t
Definition: benchmark.c:87
long int stop_timer(timer *t)
Retourne le temps en nanosecondes depuis le début de mesure dans t
Definition: benchmark.c:133