Přeskoč navigaci

Zajímavé open source komponenty pro Delphi / část 3

Další díl seznamu komponent a užitečností pro Delphi. Dnes o PasDoc, FastReport, FastMM a FastCode.

PasDoc

Každý správný program má mít dokumentaci a nejlepší dokumentací je zdrojový kód. Takže většina dokumentačních nástrojů používá nějakým způsobem jako zdroj pro dokumentaci zdrojový kód.

Existuje velké množství programů pro různé jazyky a většina se dá použít i pro Object Pascal. Ale nejlepší pro náš jazyk je PasDoc.

Možné výstupy jsou HTML, HtmlHelp, LaTeX, RTF via latex2rtf nebo jednoduché XML.

Fast Report

Pokud potřebujete reportovací nástroj zkuste FastReport. Očesaná verze 2.3 je k dispozici k volnému použití pod názvem FREEREPORT. A věřte že FastReport dělá svému jménu čest.

Fast Report

FastCode a FastMM

No a na konec něco hardcore. Ne každému už záleží na to tom jak rychle jeho program běží (a to nemluvím o programátorech ve skriptovacích jazycích kde se není čemu divit).

Už několikrát jsem tvrdil, že Delphi má kromě kompilátoru i rozumně vyváženou běhovou knihovnu (RTL) mezi velikostí a rychlostí. Některým lidem to ale nestačí a tak vznikl projekt FastCodea FastMM.

Cílem prvního je snaha ještě více optimalizovat některé často používané funkce a druhý nahrazuje memory manager používaný programy v Delphi. Nutno poznamenat, že pokud máte Delphi 2006 (částečně 2005) a vyšší tak vás toto nemusí zajímat, jelikož autoři Delphi převzali některé funkce a FastMM do Delphi, takže jak samotné Delphi, tak programy jím vytvořené obojí obsahují.

I když mám za sebou jisté zkušenosti ohledně optimalizace na rychlost v assembleru (a to již od ZX Spectra kdy se např. pro rychlé kopírovaní používalo i zásobníku) některé postupy mne překvapily. Některé rutiny (např. move) na začátku programu detekují typ procesoru a podle typu procesoru vyberou konkrétní optimalizovanou variantu.

Zajímavostí je jak rutiny nahrazují standardní proceduru svojí variantou a jelikož se to někdy může hodit, tak sem princip bezostyšně vložím.

procedure PatchMove; {Patch System.Move to Divert Calls to New Move Procedure}
const
  JumpFarId = $E9;
var
  Protect, OldProtect : DWORD;
begin
  VirtualProtect(@System.Move, 256, PAGE_EXECUTE_READWRITE, @OldProtect);
  if PByte(@System.Move)^ <> JumpFarId then {Check if Already Patched}
    begin
      PByte(@System.Move)^ := JumpFarId;
      PInteger(Integer(@System.Move)+1)^ :=
        Integer(@Move) - Integer(@System.Move)-5; {Change Destination}
    end;
  VirtualProtect(@System.Move, 256, OldProtect, @Protect);
  FlushInstructionCache(GetCurrentProcess, @System.Move, 256);
end; {PatchMove}

VirtualProtect umožní zápis do chráněné oblasti procesu, kde na adresu staré procedury se vloží kód skoku a za to adresa nového kódu.

To jsem trochu odskočil - každopádně pokud máte starší Delphi a potřebujete trochu více výkonu zkuste.

Jaggni to|Linkuj

Komentáře k tomuto článku



Prosím o dodržovaní určitých pravidel (tj. žádné neslušné texty, reklamy a tak prostě podobně). Komentáře porušující tyto pravidla budou odstraněny.

Před vložením komentáře je nutno provést náhled, jedná se o ochranu proti spamu.

 

Vložení komentáře
  
 
 

 

© NetCode.cz, 2006-9 | Všechna práva vyhrazena
Provozováno na mém pikoCMS, vygenerováno: 28.3.2017 19:42:44

O mně

Informace o mé maličkosti a kontakt.

Lokální tagy

amd(1) amiga(1) apple(1) aspnet(2) audio(1) borland(5) C64(1) codegear(12) delphi(39) dotnet(9) dvd(1) electone(1) embarcadero(1) emulator(11) firebird(2) flash(1) freepascal(5) gamecube(3) gigabyte(2) google(3) hardware(48) holografie(1) homebrew(29) hry(12) ibm(14) iphone(7) jidlo(1) komponenty(1) konzole(15) latex(1) lenovo(17) migrace(1) modchip(3) moje(9) mplayer(3) mssql(1) multi-touch(3) native-api(1) navody(23) nintendo(53) Nintendo3DS(2) nintendo64(6) NintendoDS(15) onestation(2) opera(1) ot(1) palm(1) pascal(1) pdf(1) pic(2) pmd85(1) pocitace(1) print-server(2) programovani(21) programy(25) R400(1) recenze(6) retro(1) satelit(1) seamonkey(5) snes(3) svepomoci(1) technika(1) thinkpad(20) usb(1) video(3) vs(3) vykriky(12) web(7) webdesign(8) wii(83) wiimote(13) wiiware(1) wiki(2) windows(7) windows-mobile(1) wl500g(2) wtf(8) zivot(1) ZX-Spectrum(5)