Výsledky soutěže včetně zdrojových kódů.
aktualizováno:
- 21.3.2012 - ukončeno
- 27.3.2012 - Neuromancer přidal soubor s vysvětlením algoritmu stáhnout
Demo projekt:
originální implementace - čas: 18868
Pořadí
- (diskvalifikováno pro použití krátkého stringu ) Jiří Jelínek & NkD (Delphi 7 - 3 pokus)- Jiří Jelínek (Pure Delphi) - čas: 425
- Neuromancer (Delphi XE2), tabulková verze - Neuromancer (ASM) - čas: 470
- Igor Gottwald (x pokus - mimo) (Delphi XE2)- Igor Gottwald (Pure Delphi) - čas: 918
- Tomáš Koutný (Delphi 2006) - Tomáš Koutný (ASM) - čas: 1041
- Jiří Jelínek (Delphi 7 - 2 pokus)- Jiří Jelínek (Pure Delphi) - čas: 1176
- Zdeněk Vašků (x pokus - mimo) (Delphi XE2)- Zdeněk Vašků (Pure Delphi) - čas: 1271
- Tomáš Kořínek (Delphi XE2)- Tomáš Kořínek (Pure Delphi) - čas: 1372
- Vladimír Bárta (Delphi 2009)- Vladimír Bárta (Pure Delphi) - čas: 1669
- Neuromancer (Delphi XE2), bez tabulková verze - Neuromancer (ASM) - čas: 2027
- Kubidlo (2 verze) (Delphi XE2)- Kubidlo (Pure Delphi) - čas: 2048
- Tomáš Koutný (Delphi 2006) - Tomáš Koutný (Pure Delphi) - čas: 2324
- Igor Gottwald (3 pokus) (Delphi XE2)- Igor Gottwald (ASM) - čas: 2605
- David Kovařík (Delphi 2010)- David Kovařík (Pure Delphi) - čas: 3347
- Zdeněk Vašků (3 pokus) (Delphi XE2)- Zdeněk Vašků (ASM) - čas: 3378
- Jiří Milička (Delphi XE2) - Jiří Milička (ASM) - čas: 3753
- Radek Červinka (Delphi XE2) - Radek Červinka (Pure Delphi s kouskem ASM) - čas: 4112
- Igor Gottwald (3 pokus) (Delphi XE2)- Igor Gottwald (Pure Delphi) - čas: 4428 (v Delphi XE2/64bit je to ještě kapánek lepší)
- Radek Červinka (Delphi XE2) - Radek Červinka (Pure Delphi) - čas: 5837
No vítěz je znám. Cenu poroty získává Igor Gottwald nejen za elegantní kód, ale i za nápad provádět alokaci řetězce jen když je třeba (velikost se nezměnila), což je špinavý trik, ale v rámci povolených. Výherce budu kontaktovat.
Díky moc všem, a speciálně těm co kód komentují :-). Jste opravdu dobří. Nebyl jsem schopen procházet všechny kódy (nebo je pochopit - hlavně v případě Neuromancera jsem si připadal jako úplný blbec), ale i to co jsem viděl bylo zajímavé. Několik lidí mělo první verzi v ASM a pak zjistilo, že čistý PAS s tabulkami (hodně často inspirované optimalizovanou verzi _IntToStr32 z vyšších verzi Delphi - myslím, že pochází z projektu FastCode) byl prostě rychlejší.
Doufám, že si to zkusilo i pár běžných programátorů - i bez zaslání do soutěže. A doufám, že to byla změna a zábava.
Ještě pár lidí napsalo, že kód kompilovaný v D7 byl 2x - 5x pomalejší než D2010 nebo XE2. Určitě na to má vliv zarovnání, ale i mnohem lepší optimalizátor (a to prý XE3 bude ještě brutálnější).
Poznámka: Vysvětlí mi někdo co je zase tohle? To je zase nějaké abraka dabra jako minule? (Tomáš Koutný)
const
remtable:array[0..15] of integer = (0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 0);
…
r := ($19999999*i + (i shr 1) + (i shr 3)) shr 28;
r := remtable[r];
i := ((i - r) shr 1)*$CCCCCCCD;