Super Pi dos Pobres (Homemade)

Biba,

Uma vez que quero aprofundar os meus conhecimentos no time.h pus-me a brincar, saiu isto:

#include <stdio.h>
#include <time.h>

main()
{
double difftime( time_t t1, time_t t0);
double d, a=0;

time_t t0=time(NULL);

while(a<999999.0)
{
printf(" %lf \n",a);
a++;
}


time_t t1=time(NULL);
d=difftime(t1,t0);

printf(" Tempo : %lf Segundos\n", d);

}



Basicamente isto conta o tempo que demora a contar até 999999, no meu centrino 1.4 demorou 272 segundos.

Sei que isto é uma tarefa muito básica, e que pouco pode dizer sobre a real capacidade de um processador, mas queria que voces fizessem o teste e exprimentassem este programita :D


PS-Alguem que tenha o visual basic, que compile o programa e que post aqui SFF, pois eu uso o cying, e se compilar com este programa nao corre nos pcs sem este programa.

PS1- Se alguem souber uma maneira de calcular os nanosegundos que dê umas dicas.
 
faz uma coisa, comenta:

Código:
[B] 	printf(" %lf \n",a);

[/B]ou seja, ficaria:
[B]/* printf(" %lf \n",a); */
[/B]


E ve quanto demora ;)
 
se fizer isso, aparece 0 segundos :002: , nao será o compilador que sabe que aquilo só incrementa e mete logo o valor final na variavel? Mas a piada é ver o numeros :zzz:
 
Correr isso em windowZ não dá um bom bench porque (và-xe lá xaber) o windowZ aloca, na maioria das vezes, a memória para as variáveis no "swap" e não em ram. :rolleyes: Fórças a alocação em memória fisica ou bench fidedigno esquece... :confused:

[[]]
 
Madril disse:
"printar" tanta coisa é k demora tempo :P
Há pois!

O mesmo se passa em C++, cheguei mesmo eu a testar, escrever uma data de numeros ENORMES um a um e era um arrasto total! demorava BUÉEEEEE

Deposi meti a escrever de 1000 em 1000 (por exemplo) e era bue fast, e se metesse para escrever apenas no final o calculo era quase instantâneo:D
 
destr0yer disse:
Há pois!

O mesmo se passa em C++, cheguei mesmo eu a testar, escrever uma data de numeros ENORMES um a um e era um arrasto total! demorava BUÉEEEEE

Deposi meti a escrever de 1000 em 1000 (por exemplo) e era bue fast, e se metesse para escrever apenas no final o calculo era quase instantâneo:D

O print para o buffer do ecrã é muito mais lento que redireccionar o output para um file, por exemplo, txt ou dat. :)

[[]]
 
Está-me a dar a nostalgia ...:zzz: ... apetece programar! Mas eu agora só curto RAD's! Sejam elas da Borland ou da Microsoft! E como o meu portátil não aguenta...pfff!:P

Talvez no Natal... já tenha o tão esperado LG20-44MP! :002: E depois, é só preciso projectos! ;)
 
O print atrasa bue quer seja para um ficheiro quer para o ecra... O cpu tem que transferir os dados na mesma! mais nao fazer nada e calcular apenas.

Mas sem usares armazenamento directo das variaveis em memoria não vais ter um bench como deve ser...sabes la onde eh ke o SO lhe vai apetecer por as variaveis...ele mete onde houver espaço.
 
redalert disse:
Correr isso em windowZ não dá um bom bench porque (và-xe lá xaber) o windowZ aloca, na maioria das vezes, a memória para as variáveis no "swap" e não em ram. :rolleyes: Fórças a alocação em memória fisica ou bench fidedigno esquece... :confused:

[[]]
Será? Já fiz experiencias com programas de C++ na qual um vector ia crescendo ad-infinite e só se via os MB da memória a voar num instante, e o programa era bastante rápido, assim que esgotava a ram, passava a escrever na page file e a diferença na performance do calculo era ABISSAL... (meti para fazer output no ecran de x em x passágens)...
 
kanguru disse:
poderá se considerar um ciclo em que so se incrementa um benchmark?

Sim. É o mais simples dos benchs mas sim. :p Para haver incrementação na(s) variável(is) é preciso que o cpu, memória e afins consumam tempo e recursos.

[[]]
 
Ola como iniciado onde e que eu meto:

#include <stdio.h>
#include <time.h>

main()
{
double difftime( time_t t1, time_t t0);
double d, a=0;

time_t t0=time(NULL);

while(a<999999.0)
{
printf(" %lf \n",a);
a++;
}


time_t t1=time(NULL);
d=difftime(t1,t0);

printf(" Tempo : %lf Segundos\n", d);

}
ainda nao precebi alguem me excalrece quero testar o meu pIV 3.2
 
Ola como iniciado onde e que eu meto:

#include <stdio.h>
#include <time.h>

main()
{
double difftime( time_t t1, time_t t0);
double d, a=0;

time_t t0=time(NULL);

while(a<999999.0)
{
printf(" %lf \n",a);
a++;
}


time_t t1=time(NULL);
d=difftime(t1,t0);

printf(" Tempo : %lf Segundos\n", d);

}
ainda nao precebi alguem me excalrece quero testar o meu pIV 3.2

Isso é um programa em C, tens de o compilar e depois correr. De qualquer forma como ja foi dito atrás o programa não cumpre essa função (de benchmark) como deve ser.

Usa mesmo o Super Pi.
 
Back
Topo