infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Alexandru-Iancu Caragicu din Aprilie 09, 2009, 16:21:24



Titlul: Viteza de calcul
Scris de: Alexandru-Iancu Caragicu din Aprilie 09, 2009, 16:21:24
In borland stiu ca viteza de executie era de vreo 2 - 3 milioane de operatii / secunda.
Dar din moment ce nu se mai foloseste Borland la concursuri (in special la olimpiada), as vrea sa stiu de ex cate operatii/sec sunt la evaluatorul Infoarena si daca difera (viteza) de cea folosita la evaluatoarele concursurilor (olimpiade etc.).


Titlul: Răspuns: Viteza de calcul
Scris de: Pripoae Teodor Anton din Aprilie 09, 2009, 17:10:30
Viteza difera in functie de cat de utilizat este procesorul, de memoria RAM, de multe lucruri. Din cate stiu, pe unele evaluatoare, programul tau este lasat sa ruleze x sec CPU. Daca programul tau foloseste sa zicem 25 % CPU, atunci el va fi lasat sa ruleze 4 * x secunde normale. Dar asta nu este relevant. In general, pe linux stiu ca ai 100 de milioane de operatii pe secunda. Poti face un test sa verifici. In orice caz, la majoritatea concursurilor on-site care se respecta exista o sedinta de testing inaintea primei probe, in care poti testa configuratia serverului de evaluare.


Titlul: Răspuns: Viteza de calcul
Scris de: Sima Cotizo din Aprilie 09, 2009, 17:28:49
Depinde si ce fel de operatii. Daca parcurgi cu un for de la 1 la 10 miliarde si calculezi intr-o variabila sa zicem 2*i (i iteratorul), atunci iti ruleaza sub 0.1 (daca tin minte, chiar instantaneu)... Daca compilezi fara "-O2" atunci e alta poveste...


Titlul: Răspuns: Viteza de calcul
Scris de: Mircea Dima din Aprilie 09, 2009, 21:08:20
Depinde si ce fel de operatii. Daca parcurgi cu un for de la 1 la 10 miliarde si calculezi intr-o variabila sa zicem 2*i (i iteratorul), atunci iti ruleaza sub 0.1 (daca tin minte, chiar instantaneu)... Daca compilezi fara "-O2" atunci e alta poveste...

Nu e chiar asa.. daca faci 10 miliarde de operatii care nu au efect -O2 le ignora (nu le efectueaza).

Am testat asa:

long long s=0, v, i;

for(i=1; i <= 10000000000LL; ++i) v+=2*i;

printf("%lld\n", v);

Daca nu afisezi timpul de executie este 0,000001... adica se ignora operatiile
In schimb daca afisezi...o sa stea ceva ca sa calculeze v-ul...


Titlul: Răspuns: Viteza de calcul
Scris de: Sima Cotizo din Aprilie 09, 2009, 21:10:28
Testul nu era facut de mine, doar asistasem uimit la cat de "repede" se misca o sursa de genul ala. Imi pare rau de dezinformare  :D


Titlul: Răspuns: Viteza de calcul
Scris de: Sanduleac Dan din Aprilie 13, 2009, 20:03:06
Hey, da, e interesant ca iti ignora daca nu folosesti ulterior variabila. Nu ma prindeam de ce merge asa de repede!