Page 1 of 1

optimizare cod

Posted: 16 May 2010, 07:51
by viorel2005
Buna ziua!

Am un cod scris in Visual C++ 2010.
Cand l-am rulat in Dev C++, programul a durat 1.7 sec.
Cand l-am rulat in Visual C++ 2010 a dura 7.5 sec.

Programul foloseste temaplate, si rezolva niste probleme de structuri de date.

Ce setari pot face ca, codul sa ruleze mai rapid decat daca e compilat cu Dev C++?

Re: optimizare cod

Posted: 16 May 2010, 11:07
by Ovidiu Cucu
Ce configuratie build ai rulat? Debug sau release?
Uita-te un pic pe la /O-uri: http://msdn.microsoft.com/en-US/library ... S.80).aspx

Re: optimizare cod

Posted: 16 May 2010, 12:09
by zlatomir
Eu as fi curios de doua lucruri: setarile folosite pt VS2010 (acele switch-uri la care zicea Ovidiu sa te uiti) si respectiv daca ai setat alt compilator pt devc++, pt ca mi se pare ca mi se pare ciudat ca un compilator de ~5 ani (fie el si MingW portare GCC) sa fie de ~4,5 ori mai rapid decat VC++ 10. Peste tot, unde am vazut comparatii, cele doua sunt in top si nu castiga niciunul un test atat de "detasat".

Re: optimizare cod

Posted: 16 May 2010, 16:37
by Ovidiu Cucu
Pare o noua discutie din seria "xxxc++ rocks, yyyc++ sucks..." pornind de la un benchmark de pripas. :biggrin:

Re: optimizare cod

Posted: 16 May 2010, 17:08
by Silviu Ardelean
Diferenta mi se pare enorma. Viorel, nu cumva la devC++ aveai release build iar la VC++ debug build? :P

Re: optimizare cod

Posted: 16 May 2010, 17:14
by neagu_laurentiu
Sau cum ai masurat ? Lansand aplicatiile din IDE ? Pe un sistem slab VS ocupa ceva resurse comparativ cu jucarioara cealalta.

Re: optimizare cod

Posted: 16 May 2010, 17:48
by cristianamarie
Da-i din consola cu VS in release (devenv ...) si masoara. Nu cred ca o sa mai iasa 7 secunde.

Re: optimizare cod

Posted: 17 May 2010, 14:50
by viorel2005
Multumesc de raspunsuri.

Am rulat codul in Dev C++ in modul debug si a merg asemanator 7-8 secunde.
Ceea ce nu inteleg este ca modul release de la Visual C++ 2005 este mai lent decat cel de la Dev C++.
Daca aleg Profile Guide Optimization in Visual C++ 2005 timpul de executie scade sub 2 secunde si e mai bun decat in Dev C++.
Pe Vista Visual C++ are un comportament asemanator, daca nu chiar mai rau decat in Windows XP in modurile debug si release.
Codul foloseste template-uri foarte mult .
In Dev C++ nu pot compila urmatorul cod:

Code: Select all

#include<iostream>
int arrNum[];
int main()
{
return 0;
}

int arrNum[3]={1,2,3};

Dar urmatorul cod se compileaza:

Code: Select all

#include<iostream>

int arrNum[3]={1,2,3};

int main()
{
return 0;
}

Ambele coduri merg in Visual C++ 2005. Ce optiune am la Dev C++?

Re: optimizare cod

Posted: 17 May 2010, 16:09
by zlatomir
Pune un mic demo al codului, sau descrie problema putin mai detaliat, pe mine chiar m-ai facut curios ;)

Iar "problema" cu initializarea, mie unul nu mi se pare a fi o problema, adica e considerat "good coding practice" sa initializezi variabilele cand le declari.

Re: optimizare cod

Posted: 17 May 2010, 18:47
by viorel2005
Nu pot pune codul, dar exista configuratiile release si debug.
Daca configuratia e setata pe release si apas butonul "->", acesta inseamna Start with debugging.
Exista Debug, Release cu Debug si Release fara Debug?

Re: optimizare cod

Posted: 17 May 2010, 18:54
by cristianamarie
viorel2005 wrote:Nu pot pune codul, dar exista configuratiile release si debug.
Daca configuratia e setata pe release si apas butonul "->", acesta inseamna Start with debugging.
Exista Debug, Release cu Debug si Release fara Debug?
Poti face debug si pe Debug si pe Release. Diferenta e ca _DEBUG adauga multe informatii care in release sint stripped. Poti avea .dll si .pdb si faci debug si pe un dll release.

Re: optimizare cod

Posted: 17 May 2010, 19:48
by zlatomir
viorel2005 wrote:Nu pot pune codul, dar exista configuratiile release si debug.
Daca configuratia e setata pe release si apas butonul "->", acesta inseamna Start with debugging.
Exista Debug, Release cu Debug si Release fara Debug?
Ma gandeam eu ca e posibil sa nu poti posta codul, dar poti sa ne dai mai multe detalii cum sa incercam sa reproducem problema (sau sa faci un mic "demo" doar cu partea "dubioasa"), sa testam si noi, pt ca daca release build-ul din VC10, merge de 4,5 ori mai incet decat cel din devC++ (cu compiler din anul ~2005), atunci e cu siguranta un bug (si nu ar strica sa stie si MS de el), iar daca la noi merge repede inseamna ca instalarea ta de VS e "corupta", sau cineva a facut setari "dubioase".

A mai fost spus mai sus, ai incercat sa rulezi pur si simplu aplicatia, sa nu o pornesti din VS?

Re: optimizare cod

Posted: 18 May 2010, 00:15
by Silviu Ardelean
viorel2005 wrote:Exista Debug, Release cu Debug si Release fara Debug?
Poate suna dump dar, da, exista: F5 si Ctrl + F5 (fara debug) (indiferent de tipul buildului).

Re: optimizare cod

Posted: 18 May 2010, 00:21
by Marius Bancila
Debug si Release sunt doar doua configuratii posibile, adica suma de setari pentru toolurile (compilartor, compilator de resurse, link-editor, etc.) care produc un executabil, oferite implicit de IDE. Se pot crea oricate astfel de configuratii cu orice nume si orice setari. Printre dintre diferentele majore dintre Release si Debug se numara faptul ca Release are activate optimizari, dar are setari mai mici pentru debugging. Totusi, aceste configuratii implicite se pot modifica oricand si oricum.

A nu se confunda "Debug" cu "debugger". Orice configuratie (debug, release sau orice alta variatie) poate fi rulata din IDE cu debuggerul de VC++ atasat procesului, sau fara ca debuggerul sa fie atasat. Dar asta nu inseamna "release cu/fara debug".