Delphi

┌vodem

┌vodem  |  Soubory ke sta₧enφ

 

Dnes se podφvßme na program ProDelphi, prohodφme pßr slov o novince v Delphi 9, p°idßme k dobru dv∞ internetovΘ adresy a op∞t n∞co pro zasmßnφ.

ProDelphi - program pro urychlenφ vaÜich program∙.

Ji₧ dlouhou dobu se v komponentßch a nßstrojφch pro Delphi objevuje program ProDelphi. Naposledy ve verzi 15.9 v dneÜnφm v²b∞ru. Program je urΦen k detailnφmu prozkoumßnφ program∙ v Delphi a nalezenφ "·zk²ch" mφst programu.

V dobßch, kdy byly poΦφtaΦe pomalejÜφ a m∞ly k dispozici mΘn∞ pam∞ti, bylo d∙le₧itΘ si dob°e rozmyslet koncepci programu jak s hlediska rychlosti, tak i s hlediska optimalizace dΘlky k≤du. P°i dneÜnφch mo₧nostech PC se tyto aspekty prakticky vytrßcφ ze z°etele a je nutnΘ na n∞ brßt ohled jen u urΦit²ch kategoriφ program∙. Pokud programujete profesionßln∞, urΦit∞ se setkßte s nutnostφ naprogramovat n∞jak² program z kategorie, kde zßle₧φ na rychlosti v²poΦtu. M∙₧e to b²t n∞jakß iterace, Φasto vyu₧φvanß ulo₧enß procedura na databßzovΘm serveru Φi n∞jakß ·pln∞ jinß aplikace. Pokud budete chtφt urychlit zpracovßnφ a nalΘzt mφsta, kter²mi prochßzφ algoritmus Φasto, a p°φpadn∞ nalΘzt mφsta, kterß program zdr₧ujφ, pak m∙₧e b²t program ProDelphi tφm prav²m nßstrojem, kter² pot°ebujete.

V²hodou pou₧itφ tohoto programu je skuteΦnost, ₧e po jeho instalaci vßm k v²Üe zmφn∞n²m zjiÜt∞nφm staΦφ vlo₧it jen jeden jedin² °ßdek - direktivu p°ekladaΦe {$PROFILE}. VÜechno ostatnφ za vßs ud∞lß v²Üe zmφn∞n² program.

Pokud se rozhodnete pro jeho pou₧itφ, staΦφ rozpakovat archiv do n∞jakΘho adresß°e a potΘ bu∩ spustit program setup.exe, kter² umφstφ n∞kterΘ dll knihovny a unity, pot°ebnΘ pro zpracovßnφ do pot°ebn²ch adresß°∙ nebo to m∙₧ete provΘst ruΦn∞ podle nßvodu v p°ilo₧enΘ pdf-p°φruΦce.

Pokud chcete tedy otestovat vßÜ program, staΦφ pro zaΦßtek provΘst nßsledujφcφ kroky:

  1. Vlo₧te do projektu v²Üe zmφn∞nou direktivu {$PROFILE}.
  2. Vypn∞te vÜechny optimalizaΦnφ p°epφnaΦe a breakpointy.
  3. Pou₧ijte tlaΦφtko "Ulo₧ vÜe", co₧ zajistφ vytvo°enφ souboru "*.DOF".
  4. Spus¥te program ProDelphi - viz obrßzek 1
  5. Pokud mßte instalovßno vφce verzφ Delphi, vyberte z nabφdky tu, s nφ₧ chcete pracovat a dßle zadejte nebo vyberte testovan² projekt (tlaΦφtko "Select project").
  6. Stiskn∞te tlaΦφtko "Profile"
Po 6. kroku program vlo₧φ na zaΦßtek a konec ka₧dΘ procedury vaÜeho projektu sekvence p°φkaz∙, zajiÜ¥ujφcφch sb∞r po₧adovan²ch informacφ - viz nßsledujφcφ ·sek v²pisu - vlo₧enΘ p°φkazy jsou z°ejmΘ:

...
...
Procedure PripravCRC;
  {-------------------}
  begin
{$IFDEF PROFILE}asm DW 310FH; call Profint.ProfStop; end; Try; asm mov edx,12 or $7FDC0000; 
                mov eax,self; call Profint.ProfEnter; mov ecx,eax; DW 310FH; add[ecx].0,eax; 
				adc[ecx].4,edx; end; {$ENDIF}
    GetMem(P,LenA);
    BlockRead(FA,P^,LenA,Skut);
    PomCRC:=MakeCRC(P,LenA);
    FreeMem(P,LenA);
{$IFDEF PROFILE}finally; asm DW 310FH; mov ecx,12; call Profint.ProfExit; mov ecx,eax; 
                DW 310FH; add[ecx].0,eax; adc[ecx].4,edx; end; end; {$ENDIF}
  end;
...
...

Ale nemusφte se obßvat, po ukonΦenφ test∙ m∙₧ete program po₧ßdat a ten po sob∞ op∞t "uklidφ" a vÜechny vlo₧enΘ p°φkazy vyma₧e (viz zßlo₧ku "Clean sources"). NicmΘn∞ "chibyΦka" se m∙₧e vloudit a tak si samoz°ejm∞ p°ed testovßnφm vytvo°te zßlohu.

prodel1

Obr. 1

Sßm program se vßs po provedenφ 6. kroku zeptß, zda mßte zßlohu provedenu - viz obr. 2.

Obr.2

No a pak ji₧ zb²vß jen p°elo₧it a spustit vßÜ testovan² projekt. B∞hem prßce programu se vytvß°φ n∞kolik soubor∙ s informacemi v CSV tvaru. Tyto v²sledky si bu∩ m∙₧ete p°eΦφst p°φmo nebo natßhnout t°eba do Excelu, ale asi z nich nebudete moc moud°φ (alespo≥ zpoΦßtku, pozd∞ji t°eba naleznete vlastnφ vhodnou interpretaci), tak₧e doporuΦuji vyvolat zabudovan² prohlφ₧eΦ (viz obr. 3 - tlaΦφtko "Load and view"),

Obr. 3

kter² vßm z ulo₧en²ch dat vytßhne skuteΦn∞ asi vÜe, co lze poskytnout - viz obr. 4 a 5. Nap°φklad na obr. 5 vidφte zßkladnφ v²slednΘ informace t°φd∞nΘ dle unit, t°φd a metod, procedur a funkcφ.

Obr. 4

Obr. 5

V jednotliv²ch sloupcφch pak jsou poΦty pr∙chod∙, procento Φasu z b∞hu programu i absolutnφ doba spot°ebovanß rutinou samotnou Φi rutinou vΦetn∞ podprogram∙. A to je samoz°ejm∞ jen zlomek z mnoha dalÜφch informacφ, kterΘ program poskytuje. Informace z jednotliv²ch testovacφch b∞h∙ si m∙₧ete uklßdat a potΘ porovnßvat ·Φinnost vaÜich zm∞n. ╚φslo ulo₧enΘ verze informacφ je v prvnφm sloupci tabulky. Tabulka m∙₧e b²t set°φd∞na dle libovolnΘho sloupce, staΦφ poklepat na hlaviΦku sloupce. Pokud zaÜkrtnete p°ed 6. krokem na formulß°i pole "Generate data for call graphs", pak pokud poklepete na nßzev rutiny ve v²slednΘ tabulce, zφskßte grafickΘ zobrazenφ struktury volßnφ nad°φzen²ch a pod°φzen²ch rutin (viz obr. 6) vΦetn∞ Φasov²ch ·daj∙.

Obr. 6

V tabulce m∙₧ete vyfiltrovat jen ·daje po₧adovanΘ unity, t°φdy Φi p°φmo konkrΘtnφ rutiny pomocφ zadan²ch filtr∙ na formulß°i, nebo si m∙₧ete zobrazit tlaΦφtkem "Browser" cel² strom projektu (obr. 7) a poklepßnφm definovat po₧adovan² filtr.

Obr. 7

DalÜφ mo₧nostφ je zobrazenφ nepou₧it²ch rutin tlaΦφtkem "Not called Methods" (obr. 8).

Obr. 8

Tφmto struΦn²m p°ehledem je vyΦerpßn jen zlomek mo₧nostφ programu. Program umφ nap°φklad i vypsat informace po havßrii programu, umφ testovat i assemblerovskΘ ·seky a mnoho dalÜφho.

Dodejme jeÜt∞ jen, ₧e k dispozici je i verze pro Delphi 8 a dßle, ₧e ve freeware verzi provßdφ program test a v²pis informacφ max. dvaceti rutin. Pokud si program zakoupφte, dokß₧e program zpracovat a₧ 32000 rutin, co₧ by m∞lo staΦit pro v∞tÜinu vaÜich program∙ :-).



Prvnφ zprßvy o Delphi 9.

V dob∞ tisku tohoto Φφsla bude z°ejm∞ znßmo podstatn∞ vφce informacφ o dalÜφ verzi Delphi. V souΦasnΘ dob∞ proskoΦila na internetu informace o novΘ konstrukci cyklu "for..in", kterß odpovφdß konstrukcφm "for each" v n∞kter²ch jin²ch jazycφch. Syntaxe p°φkazu mß tvar:

for <variable> in <container expression> do <statement>;

Zde prom∞nnß <variable> je lokßlnφ prom∞nnß stejnΘho typu jako data v kontrejneru a <container expression> je v²raz implementujφcφ bu∩ interface IEnumerable nebo v²raz chßpe kompilßtor jako enumerßtor nebo jako kontejner datov²ch polo₧ek. P°φkladem m∙₧e b²t t°eba StringCollection, pole (i vφcerozm∞rnΘ) nebo mno₧ina.

Cyklus pak bude vypadat t°eba takto:

type
  TBarva=(cervena, modra, zluta, bila, cerna , oranzova);
  TBarvy = set of TBarva;
 
procedure Priklad(const Vybarveni: TBarvy);
{=========================================}
var
  B: TBarva;
begin
  for B in Vybarveni do KresliKolo(B);
end; 


Odkazy

DneÜnφ odkazy jsou jen struΦnΘ a oba se t²kajφ databßzφ Interbase a FireBird:

http://www.devrace.com/en/download.php

http://www.interbase-world.com/en/index.php

Na strßnkßch najdete jak °adu informacφ a nßvod∙, tak i mnoho materißlu ke sta₧enφ.



Zßv∞rem

P°ipojenφ myÜi k poΦφtaΦi je docela snadnΘ:



Chßpßnφ rychlosti poΦφtaΦ∙ m∙₧e b²t skuteΦn∞ relativnφ:

Vyhrßl jste sßzku. VaÜe Pentium bylo rychlejÜφ ne₧ moje.



Utiskuje vßs takΘ v prßci ÜΘf nebo kolega?

Nenechte si to lφbit, p°ejd∞te k naÜφ firm∞, u nßs je mφst dost:

 

Ji°φ Ventluka