Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Více informací

Delphi XE2 - pár tipů

vložil Radek Červinka 13. září 2011 23:39

Na FireMonkey se mi líbí x věcí a jedna z nich je portabilita. Nyní se objevila nová "platforma", resp. implementace Canvas pro Windows (kromě standardních GDI+ a Direct2D) tak přibyla FMX.Canvas.VPR. Jedná se o malou knihovnu, jejíž autorem je Mattias Andersson ze serveru graphics32.org a projektu VPR, což je polygon rasterizer.

Zdrojové kódy jsou na vpr.svn.sourceforge.net/svnroot/vpr/trunk/fmx. Je tam ještě několik problémů, ale není to špatný pokus - hlavně z hlediska toho, že to používá jen GDI a rychlosti. Prostě jako první řádek v DPR dáte uses FMX.Canvas.VPR a to je vše.

TExtended a 64bit

Jelikož v 64bit se TExtended mapuje na TDouble (což je nativní pro SSE), je možné že pro některé operace budete opravdu potřebovat přesnost extended - v tom případě cc.embarcadero.com/Item/28488 - TExtendedX87: FPU-backed 80-bit Extended type for Win64. Podrobněji blog.synopse.info.

{$EXCESSPRECISION OFF}

U 64bit a float operací ještě zůstaneme: pokud náhodou pracujete se single přesností (tj. například při OpenGL atd), je dobré vědět, že např. mezivýsledkem sčítání (resp. jakékoliv operace) dvou single operandů je double (k vůli zmenšení ztráty přesnosti). To je samozřejmě z hlediska rychlosti ztráta (ale např. MS VC++ to dělá úplně stejně). Pokud ale specifikujete {$EXCESSPRECISION OFF}, viz.wiki tak mezivýsledky zůstanou single a nedojde ke ztrátě.

Jinak rychlosti 64bit počítání se podrobněji věnuje Eric Grange (autor profileru) tady a tady a abych ho citoval: good job Embarcadero. Výsledný kód je 2x - 3x rychlejší v FP operacích než 32bit verze.

TComponent a Observer

Třída TComponent byla rozšířena o Observer pattern.

protected
  function CanObserve(const ID: Integer): Boolean; virtual;
  procedure ObserverAdded(const ID: Integer; const Observer: IObserver); virtual;
  function GetObservers: TObservers; virtual;
public
  property Observers: TObservers read GetObservers;

Zatím nevím jak moc to mohu použít - jen je to mohutně používáno ohledně DataBinding.

Aktuální hodnocení 5.0 od 2 uživatelů (více je lepší, 5 hvězd nejlepší)

  • Aktuálně 5.0/5 hvězd.
  • 1
  • 2
  • 3
  • 4
  • 5

Tagy: , , ,

Novinky

Komentáře

22.9.2011 23:09:40 #

Igor Gottwald

Rád bych upozornil, že TExtendedX87 neslouží ke zvýšení přesnosti výpočtů na x64, ale jen k získání shodného binárního výstupu. Jde o to, že pokud např. máte float data uložená v binárním souboru, tak byste je na x64 nemohli načíst anebo uložit ve formě kompatibilní s platformou Win32. A právě k tomu slouží typ TExtendedX87, který umožní načíst a dále s nimi počítat, případně je uložit. Ale vlastní výpočty probíhají s přesností Single.
Zde je dobré zmínit, že u celočíselných typů je to obráceně, ty zůstaly kompatibilní s Win32 s jedinou výjimkou a tou je NativeInt, který je vhodný pro konverzi mezi typem Pointer (obojí 8 bytů na Win64 a 4 byty na Win32).

Igor Gottwald

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců