O mica testare a procesorului pentru statistica

Despre computere, telefoane, tehnologie

Moderator: Manu

Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Totusi, ceva cred ca nu e chiar in regula.
Mie imi da invariabil doua rezultate, 16 sau 31/32.

Ce anume scoate functia clock()?
Mi se pare interesant sa se poata scadea timpul.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Campus
Comandantul unitatii
Mesaje: 446
Membru din: 09 Mai 2007, 12:15
Localitate: Cluj Napoca

Mesaj de Campus »

Functia masoara durata de executie a unui programel sauu daca este comparata cu o masuratoare anterioara, a unei etape dintr-un program.
Problema mare la functiile de timp din c++ este ca sunt destul de dependente de hardware, cel putin cele din compilatoarele windows.
Din cate am inteles eu prin visual C++ sse foloseste des gesSistemTime care are performante foarte dependente de hardware
clock este o functie de baza care exista prin toate compilatoarele.
Tu ce compilator folosesti? Eu de exemplu nu am functia cron si folosesc gcc
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Eu folosesc BGT, un compilator facut de un tip din Suedia, Philip Benefal pentru jocuri audio, dar acesta se bazeaza pe Angel Script, un proiect care permite sa dezvolte fiecare un compilator pe C++ sau asa ceva.
Trebuie sa ai cumva probabil si in GCC ceva obiect timer, eu am denumit aici pe primul rand unul sub forma:
timer cron;
Tot asa puteam in loc de "cron" sa scriu cronometru, iar apoi folosesc metodele si proprietatile pentru obiectul de tip timer, referindu-ma la ele sub forma:
cronometru.x();, unde "x" este un nume de functie, de exemplu cronometru.restart() imi aduce la 0 timerul numit "cronometru".
cronometru.y;, unde "y" este o proprietate, de exemplu cronometru.elapsed imi scoate timpul scurs in milisecunde pe care il pot atribui unei variabile de tip integer.

Am vazut ca in PHP e diferita operarea cu obiectele, s-ar putea sa difere de la un compilator la altul, dar cred ca in C++ e de obicei sub aceasta forma: nume obiect, punct, functie/proprietate.

Incearca experienta:
Pentru doua variabile, atribuie inainte de while ora fixa daca se poate interoga cu tot cu milisecunde, iar dupa while la fel, iar ora fixa. Apoi mesajul sa fie sub forma: "A inceput la x si s-a terminat la y.", astfel vom vedea daca coincide treaba.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Campus
Comandantul unitatii
Mesaje: 446
Membru din: 09 Mai 2007, 12:15
Localitate: Cluj Napoca

Mesaj de Campus »

Ok, clock se referea la ceasul intern al procesorului si e mediat de constanta CLOCKS_PER_SEC. Deci apelarea la functia respectiva nu e mediata de ceasul sistemului.
Se parec a totusi nu are o acuratete extraordinara.
Exista totusi alte functii care au acuratete mai mare precum QueryPerformanceCounter.
am facut un programel de tip consola care permite 3 numarator pana la un milion, zece milioane sau o suta de milioane si pe care le poti alege cu 1 2 sau 3. Rezultatul apare atat in consola cat si pe un alert. Cu 0 se iese din program. Pun mai jos codul functiei pe care l-am gasit pe undeva pe net si il poti incerca si tu pe compilatorul tau

Cod: Selectaţi tot

#include <windows.h>
int numarator(int limita){
    double elapsedTime;
    LARGE_INTEGER frequency;        // frecventa per secunda
    LARGE_INTEGER t1, t2;           // timpi
    int  i = 0;
    // Obtine frecventa pe secunda
    QueryPerformanceFrequency(&frequency);
    // Obtine timpul 1
    QueryPerformanceCounter(&t1);
      while (i<limita){
          i++ ;
          }
    // Obtine timpul 2
    QueryPerformanceCounter(&t2);
    // Calculeaza diferenta in milisecunde
    elapsedTime = (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
   // intoarce rezultatul
    return elapsedTime;
    }
La un milion obtin 4 milisecunde pe calculatorul de la lucru....
Aici e si programelul Crescator
Ulterior am facut si varianta cu interfata grafica pe care am denumit-o Numarator
Ultima oară modificat 20 Sep 2010, 17:25 de către Campus, modificat 1 dată în total.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

De compilat cu al meu nu prea am cum, nu exista aceste functii incluse.
Pana la urma te-ai oprit la un compilator, ori inca tot cauti unul mai convenabil?
M-as apuca si eu sa incerc altul decat cel pe care il folosesc, sa pot din cand in cand face si o mica interfata grafica, nu doar audio.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Campus
Comandantul unitatii
Mesaje: 446
Membru din: 09 Mai 2007, 12:15
Localitate: Cluj Napoca

Mesaj de Campus »

Eu am incercat mai multe IDE-uri. majoritatea cu comilatorul open source GCC dar cel mai bun la raportul resurse consumate/ functionalitate a editorului mi se pare Code::Blocks. Are si ceva plugin-uri si e destul de bun pentru incepatori.... are si un template de fereastra simpla... si code completion. Nu stiu insa daca merge cu jaws.
Campus
Comandantul unitatii
Mesaje: 446
Membru din: 09 Mai 2007, 12:15
Localitate: Cluj Napoca

Mesaj de Campus »

Un excelent site pentru toti cei care doresc sa invete limbaje de programare este asta: http://www.functionx.com/. Sunt foarte multe exemple excelent structurate.
Campus
Comandantul unitatii
Mesaje: 446
Membru din: 09 Mai 2007, 12:15
Localitate: Cluj Napoca

Mesaj de Campus »

M-am mai jucat putin cu programul meu de testat ca sa invat cum se face o interfata windows. Am facut acuma 2 sectiuni, in prima poti testa procesorul prin simpla numaratoare iar a doua il testeaza prin generarea unui numar aleator de 3 cifre pe langa numaratoare... deci in timp ce numara genereaza cate un random de 3 cifre.
Daca e cineva interesat poate sa il descarce de aici.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Intr-adevar, bun site cel recomandat mai sus, cred ca doar limbajul PHP lipseste, in rest exista de toate, chiar si HTML si CSS.
Poate ca ar fi bun si un Topic despre PHP sa mai intrebam cate ceva pe forum si sa ne raspundem tot noi, astfel incat daca mai vine cineva sa poata sa se inspire.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Scrie răspuns