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.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

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

Partial English version.

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 nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

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.

Anketa

Poslední komentáře

Comment RSS