Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Jos Galaviz
int prime1(int n) {
int i;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
return 1;
}
int prime2(int n) {
int i;
for (i = 2; i <= root(n);i++)
if (n % i == 0)
return 0;
return 1;
}
int prime3(int n) {
int i, bound;
bound = root(n);
for (i = 2; i <= bound; i++)
if (n % i == 0)
return 0;
return 1;
}
int prime4(int n) {
int i, bound;
if (n % 2 == 0)return (n == 2);
if (n % 3 == 0)return (n == 3);
if (n % 5 == 0)return (n == 5);
bound = root(n);
for (i = 7; i <= bound; i+=2)
if (n % i == 0)
return 0;
return 1;
}
int prime5(int n) {
int i;
if (n % 2 == 0)return (n == 2);
if (n % 3 == 0)return (n == 3);
if (n % 5 == 0)return (n == 5);
for (i = 7; i*i <= n; i+=2)
if (n % i == 0)
return 0;
return 1;
}
int cribaEratostenes(int n) {
unsigned long inicial;
int i, j;
esprimo[0] = esprimo[1] = 0;
for (i = 2; i <= n; esprimo[i++] = 1);
inicial = 0;
do {
for (i = inicial; !esprimo[i] && (i < TAM); i++);
inicial = i;
for (j = i + inicial; j <= n; j += i)
esprimo[j] = 0;
inicial++;
} while (inicial <= n);
return 1;
}
Compilacion
Proceso
gcc -pg -ansi -Wall -O1 primos.c -lm -o primos
./primos -1 2> lista
gprof -b primos gmon.out > perf-1.txt
./primos -2 2> lista
gprof -b primos gmon.out > perf-2.txt
./primos -3 2> lista
gprof -b primos gmon.out > perf-3.txt
./primos -4 2> lista
gprof -b primos gmon.out > perf-4.txt
./primos -5 2> lista
gprof -b primos gmon.out > perf-5.txt
./primos -6 2> lista
gprof -b primos gmon.out > perf-6.txt
o bien
gcc -pg -ansi -Wall -O1 primos.c -lm -o primos
./primos -1 2> lista
mv gmon.out gmon.sum
./primos -2 2> lista
gprof -s primos gmon.out gmon.sum
./primos -3 2> lista
gprof -s primos gmon.out gmon.sum
./primos -4 2> lista
gprof -s primos gmon.out gmon.sum
./primos -5 2> lista
gprof -s primos gmon.out gmon.sum
./primos -6 2> lista
gprof -s primos gmon.out gmon.sum
gprof -b primos gmon.sum > performance.txt
Tiempos
Primes: calling function prime1
Elapsed time: 12.140000 sec.
Primes: calling function prime2
Elapsed time: 0.190000 sec.
Primes: calling function prime3
Elapsed time: 0.090000 sec.
Primes: calling function prime4
Elapsed time: 0.050000 sec.
Primes: calling function prime5
Elapsed time: 0.050000 sec.
Primes: calling function prime6
Elapsed time: 0.030000 sec.
Flat profile:
Call graph
granularity: each sample hit covers 2 byte(s) for 0.08% of 12.30
seconds
index % time self children called name
12.16 0.00 299999/299999 main [1]
[2] 98.9 12.16 0.00 299999 prime1 [2]
-----------------------------------------------
0.03 0.03 299999/299999 main [1]
[3] 0.5 0.03 0.03 299999 prime2 [3]
0.03 0.00 12608927/12988925 root [5]
-----------------------------------------------
0.04 0.00 299999/299999 main [1]
[4] 0.3 0.04 0.00 299999 prime3 [4]
0.00 0.00 299999/12988925 root [5]
-----------------------------------------------
0.01 0.00 299999/299999 main [1]
[7] 0.1 0.01 0.00 299999 prime4 [7]
0.00 0.00 79999/12988925 root [5]
Compilacion para coverage