1480
« kdy: 17. 12. 2014, 09:09:40 »
S rychlostí kódu dnes nebývá problém, překladače C/C++ používají sofistikované optimalizace a JIT v jazycích jako Java nebo C# (resp. cokoliv v .NET) generuje velmi rychlý kód. Assembler se v obecném případě nepoužívá, už déle platí, že překladač generuje lepší strojový kód než člověk, a dnes je navíc mnohdy žádoucí překládat stejný kód pro Intel (32 a 64-bitový) a ARM, takže těch "asemblerů" je několik (ARM pomalu prosazuje i svou 64-bitovou architekturu, takže celkem to jsou nejméně čtyři různé platformy).
Co se týče paměti, zde jde o to, jestli se použije (plnohodnotný) GC. GC má totiž řádově vyšší nároky na paměť ("high water mark") a jakmile paměť začne docházet, řádově se zpomalí. Proto se často používá "automatic reference counting" (Apple ho má všude a Microsoft ve WinRT), jež zajistí automatickou správu paměti bez nevýhod GC. Navíc v C++ využívá dobrý kód možnost alokace na zásobníku, což je ještě úspornější.
Nejlepší praktická rada tedy je zaměřit se na C++ a pochopit, jak v něm funguje správa paměti. Rychlost výsledného nativního kódu bych neřešil, překladače vesměs generují nejlepší možný kód,