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.
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.
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,.
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.
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.
Come ho detto dipende da molti fattori. Anche l'ordine di esecuzione dei due test può influire sull'esito.
Riferito a cosa, al test o alla funzione indicata?Di che genere di performance si parla ?
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.
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.
ricordati di effettuare test di performance sulle versioni NON debug..
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.Originariamente inviato da giuseppe500
avevi ragione mcapp , i tempi sono circa uguali in release.
PErchè questa differenza ? per i simboli di debug?
ciao.
ma riguardo alla domanda sulle prestazioni della programmazione generica che ho posto sopra sai qualcosa?
ciao