Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [c++]fare beanchmarks

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]fare beanchmarks

    Ciao.
    Come posso leggere il tempo che ci mette il c++ ad eseguire una data operazione o una data funzione?
    si deve usare il profiler?
    o si fa diversamete.
    ps. ho il vs 2008
    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    io ho provato il seguente test:


    #include "stdafx.h"
    #include <algorithm>
    #pragma comment (lib,"Winmm.lib")
    #include <windows.h>
    #include <mmsystem.h>
    #include <vector>
    using namespace std;
    #define size 100000
    int _tmain(int argc, _TCHAR* argv[])
    {
    vector<int> v;
    DWORD x[size];

    for(DWORD i= 0 ; i <size; i++)
    x[i]= i;

    DWORD dStart = timeGetTime();

    copy(x, x + size, inserter(v, v.begin()));
    DWORD dEnd = timeGetTime();

    printf("Tempo stl :%i\n",dEnd - dStart);

    v.clear();

    dStart = timeGetTime();

    for(DWORD i = 0 ; i <size; i++)
    {
    int p = x[i];
    v.push_back(p);
    }
    dEnd = timeGetTime();


    printf("Tempo ciclo :%i\n",dEnd - dStart);

    char c;
    scanf(&c);

    return 0;
    }

    e mi sembra che il ciclo standard ci metta 3/4 volte in meno della funzione copy , mentre avevo letto su effective stl il contrario.
    perchè? sbaglio a calcolare i tempi?
    ciao,.

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    1) Io utilitto la QueryPerformanceFrequency per i test.
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

    2) Dipende da molti fattori, ma essenzialmente il collo di bottiglia è il vector.
    Prova a modificare così.
    codice:
    vector<int> v;
    v.reserve(size+1);
    ...
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie shodan.
    Il vector pero' è si il collo di bottiglia , ma è presente anche nel secondo ciclo , quello esplicito.
    Ho letto su google che la programmazione generica è piu ' performante , non sto parlando di questo test stupido , ma è vero?
    Di che genere di performance si parla ? ho cercato ma non ho trovato benchmarks.
    ciao.
    grazie.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Come ho detto dipende da molti fattori. Anche l'ordine di esecuzione dei due test può influire sull'esito.

    Di che genere di performance si parla ?
    Riferito a cosa, al test o alla funzione indicata?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    no , rispetto alla programmazione ad oggetti e a quella generica , ho letto che la programmazione generica è piu performante , ma ho letto cosi , non so nemmeno chi era a dirlo.
    ma pensando al fatto che è un tipo di programmazione non polimorfica senza
    classi virtuali polimorfismo eccc..forse è li che aumentano le performances si puo da quello che ho letto usare un "polimorfismo" "compilato" e non interpretato runtime.
    ma ti ripeto sono un principiante.

  7. #7

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    avevi ragione mcapp , i tempi sono circa uguali in release.
    PErchè questa differenza ? per i simboli di debug?
    ciao.

  9. #9
    Originariamente inviato da giuseppe500
    avevi ragione mcapp , i tempi sono circa uguali in release.
    PErchè questa differenza ? per i simboli di debug?
    ciao.
    Non solo: per gli ottimizzatori disattivati nelle versioni debug, ed anche per la presenza di codice che viene compilato ed eseguito solo nelle versioni debug: ad esempio il codice che controlla gli errori logici.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ma riguardo alla domanda sulle prestazioni della programmazione generica che ho posto sopra sai qualcosa?
    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.