/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Optimering af programmer skrevet i C++ Bui~
Fra : Martin Schultz


Dato : 24-03-01 14:32

ER der nogen der har nogle links til hvordan man optimere programmer
skrevet i C++ Builder eller bare C++ generelt?

Jeg har hørt at der et noget med at hvis man ikke laver alle formende
når programmet starter vil det loade meget hurtigere. Hvordan gør man
det?

 
 
Mogens Hansen (24-03-2001)
Kommentar
Fra : Mogens Hansen


Dato : 24-03-01 18:26


"Martin Schultz" <doctor_m@REMOVE.THIS.cryogen.com> wrote in message
news:d98pbtkbc3mkg79q6ibkf1klbn2pnbqmtr@4ax.com...
> ER der nogen der har nogle links til hvordan man optimere programmer
> skrevet i C++ Builder eller bare C++ generelt?

Det er et meget bredt emne.
Vær sikker på at optimér der hvor du har et problem - hvilket betyder mål
performance med en profiler. De flestes intuition om hvor der er et
performance problem er dårlig.

Her kan du finde profilere til C++Builder
www.totalqa.com
(Automated AQ QTime)
www.turbopower.com
(TurboPower Sleuth QA Suite)
http://developer.intel.com/software/products/vtune/ (Intel VTune)

>
> Jeg har hørt at der et noget med at hvis man ikke laver alle formende
> når programmet starter vil det loade meget hurtigere. Hvordan gør man
> det?

Under menuen "Project | Options" på fanebladet "Forms" kan man bestemme
hvilke form der skal auto-creates.

Hvis dit problem er at din applikation loader for langsomt, kan du overveje
at anvende "Delay-load" af DLL under menuen "Project | Options" på
fanebladet "Advanced Linker" (Normalt anbefaler jeg absolut ikke at anvende
DLL'er - medmindre man har en meget god grund).
Matt Pietrek har til MSDN februar 2000 lavet programmet DelayLoadProfile.exe
som kan hjælpe med at bestemme hvilke DLL, der med fordel kan delay loades.

Du kan også lave en DEF-fil, hvor du angiver hvilke dele af koden der skal
loades under opstart af programmet (SEGMENTS PRELOAD) og hvilke der først
skal loades når der er behov for det (SEGMENTS LOADONCALL) - men det er
noget omstændigt.

Så vidt jeg husker, har Matt Pietrek skrevet nogle artikler og utilities til
MSDN som du kan bruge til at _måle_ hvilken forskel det har på load tiden af
din applikation. Måske
http://msdn.microsoft.com/msdnmag/issues/0500/hood/hood0500.asp kan hjælpe
dig.

Matt Pietrek har skrevet meget om performance i samspillet mellem Windows og
applikationer.

Venlig hilsen

Mogens Hansen





Asger K. Alstrup Nie~ (25-03-2001)
Kommentar
Fra : Asger K. Alstrup Nie~


Dato : 25-03-01 23:37

"Mogens Hansen" <mogens_h@dk-online.dk> writes:

>Her kan du finde profilere til C++Builder
> www.totalqa.com
>(Automated AQ QTime)
> www.turbopower.com
>(TurboPower Sleuth QA Suite)
> http://developer.intel.com/software/products/vtune/ (Intel VTune)

Jeg kan kun anbefale GlowCode. (www.glowcode.com). Jeg har kun erfaring
i brug i forbindelse med Visual C++ 6.

Jeg har erfaring med Intel VTune og GlowCode i forbindelse med Windows
udvikling, og gprof under Unix. Jeg ville være interesseret i at høre
andres erfaringer med andre profilere. Her kommer min vurdering:

VTune er godt til low-level profilering, hvor man ønsker at få information
om præcist hvilke instruktioner, der er problematiske, således at man kan
presse de sidste procenter ud af den allerinderste løkke.
Det er til gengæld ikke så godt til den form for profilering, som man oftest
har brug for: At få et overordnet indtryk af, hvor problemerne i koden er,
og hvorledes man bedst kan angribe dem.

Hertil er GlowCode glimrende. Desuden er det lidt billigt end andre
alternativer, og har udmærkede faciliteter til at finde leaks af forskellig
karakter. Vigtigt er også at udvikleren er meget hjælpsom: Han har
implementeret flere forbedringer efter forslag.

Til sammenligning er min vurdering af gprof under Unix, at det er et
udmærket værktøj til at finde flaskehalsene i mange programmer på samme måde
som GlowCode: Man finder de store syndere, og hvem der kalder synderne.
Det har endda lidt bedre rapporteringsfaciliteter, men til gengæld taber
det stort på performance-hittet. Til forskel fra VTune og GlowCode
understøtter gprof ikke "probalistisk" profilering, hvilket gør at det
bliver noget besværligt at profilere tids-kritisk kode, og simpelthen
langsomt og besværligt at profilere interaktive programmer.
(Det skal siges at VTunes call-graph profileringsmode er tilsvarende
til gprofs funktionsmåde, hvor det blot virker meget langsommere, og
hvor rapporteringsdelen er noget svagere. Til gprofs form for profilering
har jeg ikke fundet noget bedre, men min anke er at ofte har jeg brug
for en anden form for profilering: Jeg vil gerne give præcision for at
opnå hastighed i min hierarkiske profilering).

Mvh
Asger Alstrup

Mogens Hansen (26-03-2001)
Kommentar
Fra : Mogens Hansen


Dato : 26-03-01 13:55


"Asger K. Alstrup Nielsen" <alstrup@diku.dk> wrote in message
news:99lrtn$jvr@ask.diku.dk...
> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>
> >Her kan du finde profilere til C++Builder
> > www.totalqa.com
> >(Automated AQ QTime)
> > www.turbopower.com
> >(TurboPower Sleuth QA Suite)
> > http://developer.intel.com/software/products/vtune/ (Intel VTune)
>
> Jeg kan kun anbefale GlowCode. (www.glowcode.com). Jeg har kun erfaring
> i brug i forbindelse med Visual C++ 6.

Så vidt jeg kan se af beskrivelsen er den ikke kompatibel med det debug-info
format som Borland C++Builder anvender.

>
>
> VTune er godt til low-level profilering, hvor man ønsker at få information
> om præcist hvilke instruktioner, der er problematiske, således at man kan
> presse de sidste procenter ud af den allerinderste løkke.
> Det er til gengæld ikke så godt til den form for profilering, som man
oftest
> har brug for: At få et overordnet indtryk af, hvor problemerne i koden er,
> og hvorledes man bedst kan angribe dem.

Det er også sådan jeg har oplevet, men det er givetvis den avancerede
profiler til Windows/Intel.

Den jeg for øjeblikket bruger mest er QTime. Den er nem at sætte op og har
en enkel bruger grænseflade.
Den kan lave en række forskellige typer målinger:
Static Analysis
Coverage: Function Coverage, Line Coverage (Grouped by file), Line
Coverage
Hit Count: Function Hit count, Line Hit Count
Profiler: Function Profiler
Tracing: Function Trace
Sampling: Function Sampling (NT only), Line Sampling (NT only)

På linie-niveau kan den kun lave samplet profiling, hvilket er en alvorlig
begrænsning.
Specielt er jeg begejstret for Coverage og Trace faciliteterne.

Jeg har gode erfaringer med at bruge QTime's coverage analysator sammen
AQTest, som er en test-robot til grafiske brugergrænseflader fra samme firma
(www.totalqa.com), til at lave automatisk test af programmer. Men det er jo
en anden historie.

Turbo Power's profile skulle kunne lave profiling på linie-niveau, men den
har jeg endnu ikke prøvet.

Desuden har Rational og NuMega udemærkede profilere, coverage analysatorer
og leak mv. detektorer til Visual C++.


Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste