optimizare cod

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
Post Reply
viorel2005
Membru
Membru
Posts: 208
Joined: 24 May 2008, 09:41

optimizare cod

Post by viorel2005 » 16 May 2010, 07:51

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++?



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: optimizare cod

Post by Ovidiu Cucu » 16 May 2010, 11:07

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

User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: optimizare cod

Post by zlatomir » 16 May 2010, 12:09

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".

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: optimizare cod

Post by Ovidiu Cucu » 16 May 2010, 16:37

Pare o noua discutie din seria "xxxc++ rocks, yyyc++ sucks..." pornind de la un benchmark de pripas. :biggrin:

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: optimizare cod

Post by Silviu Ardelean » 16 May 2010, 17:08

Diferenta mi se pare enorma. Viorel, nu cumva la devC++ aveai release build iar la VC++ debug build? :P

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: optimizare cod

Post by neagu_laurentiu » 16 May 2010, 17:14

Sau cum ai masurat ? Lansand aplicatiile din IDE ? Pe un sistem slab VS ocupa ceva resurse comparativ cu jucarioara cealalta.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: optimizare cod

Post by cristianamarie » 16 May 2010, 17:48

Da-i din consola cu VS in release (devenv ...) si masoara. Nu cred ca o sa mai iasa 7 secunde.
Nuclear launch detected

viorel2005
Membru
Membru
Posts: 208
Joined: 24 May 2008, 09:41

Re: optimizare cod

Post by viorel2005 » 17 May 2010, 14:50

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++?

User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: optimizare cod

Post by zlatomir » 17 May 2010, 16:09

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.

viorel2005
Membru
Membru
Posts: 208
Joined: 24 May 2008, 09:41

Re: optimizare cod

Post by viorel2005 » 17 May 2010, 18:47

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?

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: optimizare cod

Post by cristianamarie » 17 May 2010, 18:54

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.
Nuclear launch detected

User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: optimizare cod

Post by zlatomir » 17 May 2010, 19:48

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?

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: optimizare cod

Post by Silviu Ardelean » 18 May 2010, 00:15

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).
Last edited by Silviu Ardelean on 18 May 2010, 00:24, edited 1 time in total.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: optimizare cod

Post by Marius Bancila » 18 May 2010, 00:21

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".
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Post Reply