Rozcestník: Jste tu poprvé?
Pro začátečníky jsem napsal úvod do programování v Delphi.
Můžete si přečíst informace ohledně změn v jednotlivých verzích Delphi a
případně mezi jednotlivými edicemi Delphi.
Pokud přecházíte ze starších verzí tak řetezce a unicode.
Možná Vás bude zajímat spolupráce databáze a Delphi,
nebo se budete rozhodovat mezi různými druhy Delphi projektů.
Navštivte adresář nejpopulárnějších open source Delphi komponent
Platform status - podporované platformy v jednotlivých verzích
Free Delphi Starter Edition download
Potřebujete Delphi školení nebo konzultace na různá témata?
Jak se tak potuluji po zákaznících se školením nebo konzultacemi, tak narážím na opakovanou situaci s FieldByName (případně podobnými funkcemi).
Datum: 2018-03-05 23:36:00 Tagy: db, ladeni, optimalizace
Když jsem potřeboval profilovat tak jsem většinou používal Sampling profiler. Nyní se ale objevil zajímavý program Spider (zdrojáky) a některé jeho parametry jsou velmi speciální. Např. to, že je to jak sampling, tak podle mne instrumentační profiler (ale bez zásahu do zdrojového kódu - pracuje přímo s EXE v paměti).
Další velmi zajímavou vlastností je podpora více vláken s tím, že se navíc zobrazuje jak jsou vlákna v akci.
Všimněte si, že profiler zobrazuje jména vláken (jedná se o demo z instalace Delphi - thrdemo), a zároveň je evidentní, že nejrychlejší byl TQuickSort což je velmi přehledně vidět z diagramu.
Datum: 2015-11-13 17:34:00 Tagy: profiler, optimalizace, vlakna
FastMM4 je geniální. V podstatě ve většině instancí je nepřekonatelný - a že se o to stále někdo pokouší. Ale v případech brutálních vícevláknových (hodně vláken), paměťově intenzivních programů je možné, že FastMM přestane dobře škálovat díky tomu, že své interní struktury chrání spinlocky.
Datum: 2015-09-05 00:27:00 Tagy: FastMM, optimalizace, Threading
Jistě znáte jméno Andreas Hausladen - člověk který stojí za IDEFixPack (mimochodem zrovna vyšla nová verze 5.8) , v půlce jednotek z JCL najdete jeho jméno atd.
Několikrát jsem zde jeho dílo velmi obdivoval a to platí stále. Tak on částečně z nudy napsal nový JSON parser, dostupný na github a nepřekvapivě všem ostatním natrhl…
Datum: 2015-02-19 21:53:00 Tagy: super, IDE, JSON, optimalizace
Jednoho krásného dne Váš program zjistí, že trpí nedostatkem paměti. Přirozeným krokem je přechod na 64bit aplikace, ale existuje i jiná možnost. U EXE (resp. PE souboru) se dá specifikovat flag IMAGE_FILE_LARGE_ADDRESS_AWARE. Tento flag byl původně určen pro speciální mód 32bit Windows, kdy místo normálních cca 2GB paměti pro 32bit proces nabízel celých úžasných 3GB volné paměti. Praktická využitelnost tedy nic moc, protože tento mód Windows se moc nepoužíval.
Situace se obrátila s příchodem 64bit Windows (jen aby nedošlo k nedorozumnění - dávejte pozor kdy mluvím o 32bit procesu, kdy o 32bit Windows a kdy o 64bit Windows).
Datum: 2014-09-19 22:09:00 Tagy: delphi, optimalizace, praxe, windows, FastMM
Výsledky soutěže včetně zdrojových kódů.
aktualizováno:
Demo projekt:
originální implementace - čas: 18868
Datum: 2012-03-21 19:28:00 Tagy: optimalizace
Pro zájemce třetí kolo soutěže. Úkolem je optimalizovat demo funkci, pravidla se od minule v podstatě nemění. Nejlepší (tj. nejrychlejší) vyhraje tričko s logem FireMonkey, flašku 4GB a případně 2x hrníček s logem Borland (viz minule, fakt se z něj dobře pije). Případně může být udělena i druhá cena (za nejzajímavější kód nebo nejrychlejší řešení bez ASM).
Uzávěrka je 21.3.2012 ve 20 hodin, ale řešení se může posílat průběžně (každý může poslat 3 řešení), ale nejdříve 1.3 - chtěl bych si zkusit ještě trošku poladit svoje řešení.
Datum: 2012-02-24 22:59:00 Tagy: optimalizace
Jen pro zajímavost pro začátečníky malé zamyšlení o řetezcích, Exception.CreateFmt a podobných funkcích. Více...
Datum: 2011-11-18 22:03:00 Tagy: začátečníci, praxe, optimalizace
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.
Datum: 2011-09-13 22:39:00 Tagy: FireMonkey, DelphiXE2, optimalizace, RTL
Opět něco co mne cestou praštilo do nosu. Dnes to bude případ "Test na prázdný řetězec", jeden zajímavý inzerát a help update pro XE. Více...
Datum: 2011-06-30 21:52:00 Tagy: optimalizace, embarcadero
Resp. spíše několik zajímavých odkazů, třeba se někomu bude něco hodit.
Datum: 2011-05-24 22:38:00 Tagy: komponenty, praxe, optimalizace, RTL
Tak jo, zde jsou výsledky. Když jsem tuto optimalizační soutěž navrhoval, tipoval jsem limit tak kolem 100ms. Navrhoval jsem úlohu, která je dostatečně rychlá na základní naprogramování, má potenciál na optimalizaci a která by se dala celkem jednoduše paralelně zpracovávat. Výsledek mne opravdu překvapil. Více...
Datum: 2011-02-28 20:29:00 Tagy: optimalizace
Aktualizace:
Od minulé soutěže mi už otrnulo a jelikož převážná většina lidí v anketě nebyla proti dalšímu kolu soutěže a do jara ještě chvilku máme čas, je zde další úkol.
Proti minulému kolu jsem změnil několik pravidel:
Datum: 2011-02-07 21:15:00 Tagy: optimalizace
Hodně toho bylo napsáno ohledně 64bit Delphi. Aktuální stav je takový, že další verze Delphi by měla být i s 64bit kompilátorem (pokud se nestane něco hooodně nepředvídatelného jako zemětřesení atp).
Následující informace je čistě informativní a bez záruky a jen jako ukázka, vše se může změnit do doby vydání další verze Delphi.
Update Více...
Datum: 2010-12-28 20:59:00 Tagy: delphi64, optimalizace, assembler
V článku Základy JSON v Delphi kolega <z> nastínil porovnání rychlosti JSON, INI a dalších. Jelikož bylo několik dotazů pro upřesnění, zde je výsledek, který mi <z> zaslal a navíc testovací program. Je samozřejmé, že je zde prostor pro další optimalizaci, přesto to lze chápat jako ukázku a přehled možností.
Aktualizováno po druhé
Datum: 2010-11-05 22:48:00 Tagy: JSON, optimalizace
Zase to udělal. Opět všechny překvapil.
Zatím jsem se nikdy nezmiňoval o nějakém beta rozšíření, ale tentokrát udělám malou výjimku. Andreas Hausladen uvedl beta verzi svého IDEFixPacku, kdy pro opakované použití CodeInsight (tj. nápovědy kódu po Ctrl+Space) není žádná prodleva a navíc je hodně robustní k chybám ve zdrojovém kódu, kdy nabídne nekompletní nabídku místo původního mlčení.
Podporované jsou Delphi 7, Delphi 2007, Delphi 2009, Delphi 2010 a Delphi XE.
Hmm, chtěl bych být tak dobrý. Člověk, který napíše plugin do IDE opravující problémy a (pravděpodobně) nemá zdrojové kódy IDE (i když několikrát řekl, že jeho vztahy s vývojáři jsou hodně nadstandardní) je prostě neuvěřitelný. Předpokládám, že se jeho úpravy brzo promítnou i do Delphi XE (jako to už bylo několikrát).
Jo a odkaz na IDEFixPack 4.0 BETA.
Více...Datum: 2010-11-03 22:20:00 Tagy: nastroje, optimalizace, fix
Ještě malá poznámka k inline optimalizacím. Tentokrát na ni upozornil přímo Allen Bauer a dokud na ni neupozornil on, tak jsem si tuto souvislost neuvědomil.
Mějme následující kvalitní kód:
program InlineTest;
{$APPTYPE CONSOLE}
{$O+}
uses
SysUtils;
var
s : string;
begin
s:= 'Test';
writeln(s);
writeln(Length(s));
end.
Datum: 2010-09-24 23:12:00 Tagy: kompilátor, optimalizace, RTL
Osobně si myslím, že programovat se člověk naučí jen psaním programů a rýpáním se v cizích kódech (no a ještě čtením delphi.cz). Rád se dívám, jak to dělají jiní a nechávám se inspirovat. A sem tam narazím na kousek kódu, který mne zaujme. A tak ho sem hodím v novém občasníku (tag utrzky).
Velmi dobrým zdrojem je VCL a našinec tak kolikrát najde velmi zajímavé konstrukce. Jako ta dnešní, která je velmi často používaná i jinde. Více...
Datum: 2010-09-08 21:53:00 Tagy: optimalizace, utrzky
Nová verze Delphi je dostupná. Minule jsem již naznačil některé novinky, takže dnes jen upřesnění co mne zaujalo - později to bude snad detailněji rozepsané (stejně jako v případě Delphi 2010).
Datum: 2010-09-01 00:48:00 Tagy: delphi XE, RAD Studio, kompilátor, optimalizace, RTL, VCL, verze, tool cloud
Blíží se podzim, trnky už pomalu dozrávají a nová verze Delphi je už také skoro hotová.
Jak je patrno ze změn v Delphi roadmap, někoho napadlo, že číslo roku už není dostatečně cool, takže nové Delphi bude místo Delphi 2011 mít název Delphi XE, kde XE není žádná zkratka, jen se tak prostě jmenují všechny produkty Embarcadera. Mimochodem: další verze bude asi XE2. Více...
Datum: 2010-08-14 22:47:00 Tagy: Delphi 2011, cloud, profiler, nastroje, regulární výrazy, optimalizace
Naše malá soutěž je u konce, takže je na čase provést nějaké zhodnocení. Jsem rád, že se zúčastnilo celkem dost lidí a co je ještě lepší, že co člověk to algoritmus, přičemž některé opravdu překvapující. Rád bych všem poděkoval, bylo to velmi zajímavé. Více...
Datum: 2010-07-29 21:23:00 Tagy: optimalizace
Jen tak pro povzbuzení apetitu a pro ukázání, že měření je celkem dostatečné - mezivýsledky. Jo a ještě poznámka: nezkoušejte takové triky, jako po prvním průběhu si do stringlistu přihodit výslednou hodnotu, nebo ještě lépe - nahradit text za výsledek. Takové řešení je neplatné, ale pobavilo. Navíc jsem upravil některé řešení na jednořádkové data - pro porovnání. Více...
Datum: 2010-07-25 21:07:00 Tagy: optimalizace
Přiznám se, že toto jsem neplánoval.
Jak jsem připravoval tu soutěž ohledně programování, tak jsem si to samozřejmě musel referenčně zkusit. Psal jsem to v Delphi 2010 a po odladění mne napadlo, zda to půjde přeložit i neunicode verzí - samozřejmě to šlo bez problémů, ale rychlost zpracování byla celkem rozdílná a to jsem v podstatě nic neměnil - kromě odstranění direktiv, kterým starší verze nerozumí.
No a když už jsem byl v tom, tak jsem to zkusil se všemi verzemi co mám nainstalované. A tady je výsledek. Více...
Datum: 2010-07-16 22:23:00 Tagy: verze, optimalizace, kompilátor
Zkusíme to jinak. Nechal jsem se inspirovat v zahraničí a uděláme takovou malou soutěž. Já navrhnu zadání (dostatečně lehké) a Vy zkusíte poslat implementaci části programu, která bude provádět zadání. Pro normálního programátora cca 1-2 hodiny práce. Doufám, že to zkusíte.
Cílem je porovnat různé řešení a hlavně začátečníkům ukázat jak to dělají jiní. Budou vyhlášeni dva vítězové:
Druhá cena nemusí být vyhlášena (málo účastníků, autor už vyhrál první cenu …). Více...
Datum: 2010-07-15 22:17:00 Tagy: delphi, verze, optimalizace
Předchůdcem anonymních metod z Delphi 2009 jsou vložené (nested) procedury. To ale neznamená, že by éra vložených procedur skončila. Osobně je rád používám na zpřehlednění kódu v případě trošku delší procedury nebo na lokální provedení opakované akce. Hlavní výhodou je možnost přístupu k lokálním proměnným dané procedury. Více...
Datum: 2010-05-27 22:01:00 Tagy: optimalizace, kompilátor, Object Pascal, začátečníci
Hodně lidí stále používají starší verze Delphi (nejčastěji 5-7) a nemají přehled o novinkách v novějších Delphi (a změn je hodně, hlavně ohledně jazyka), takže si je rychle prosvištíme. A to samé pak udělám s Delphi 2009 a snad i s Delphi 2010 (kde se pak budu jen odkazovat na tento článek).
Delphi 2007 je první verzí, která vznikla po oddělení vývojových nástrojů od Borlandu a je znát, že to programátorům dalo novou chuť pracovat a odstraňovat chyby (je pravdou, že Delphi 8 bylo neodladěné). IDE je interně nazýváno Galileo, první verze byla pro neštastné Delphi 8, pro Delphi 2007 se jedná již o 5 verzi IDE a proti předchozím verzím je opravdu stabilní. Delphi 2007 je poslední ne unicode verze a jedná se o nonbreaking verzi, tj. je binárně kompatibilní s Delphi 2006 (tj. dcu z Delphi 2006 lze používat ve 2007). Více...
Datum: 2009-12-08 22:57:00 Tagy: Delphi 2007, delphi, embarcadero, optimalizace, IDE, kompilátor, super
Profilery kódu nejsou moc často používanou pomůckou, ale někdy pomohou velmi výrazně zrychlit běh programu.
Zjednodušeně řečeno je profiler nástroj, který po dobu běhu programu zjišťuje informace o době trvání běhu jednotlivých částí programu a následně po ukončení běhu tyto statistiky zobrazí.
Existují (pokud vím) dva druhy profilerů: instrumentační a vzorkovací (samplovací).
Kdy použít profiler? Jednoduše když máte pocit, že by váš program mohl běžet rychleji. Někdy pak stačí malá změna ve výsledném kódu (např. odstranění zbytečného volání funkce, použitím nějaké cache nebo odstranění opětovného vyhodnocování špatně udělané property tím, že si zapamatujete její hodnotu) a výsledný kód běží rychleji a uživatel to ocení. Více...
Datum: 2009-12-06 21:11:00 Tagy: nastroje, delphi, optimalizace, profiler