Jak psát kód, aby fungoval rychle z pohledu dynamického řízení?
sobes.tech AI
Odpověď od AI
Použijte struct a enum místo class tam, kde je to možné. Typy hodnot implicitně nepoužívají dynamické směrování.
Použijte final u tříd a metod, abyste zabránili dědění a přepsání, což umožní kompilátoru provádět přímé směrování.
final class MyFinalClass { // Třída nemůže být zděděna
final func myFinalMethod() { // Metoda nemůže být přepsána
// ...
}
}
Používejte protokoly s požadavky pouze static nebo final metod/properties, nebo s generiky, které lze specializovat při kompilaci.
protocol MyProtocol {
static func staticMethod()
}
Používejte private a fileprivate pro metody a vlastnosti uvnitř třídy/struktury/enumu. To může umožnit kompilátoru použít rychlejší směrování, protože rozsah je omezen.
class MyClass {
private func privateMethod() {
// ...
}
}
Vyhněte se častému používání obecných protokolů za běhu, kde jsou konkrétní typy předem neznámé, protože volání přes protokoly používá virtuální tabulku. Upřednostněte generiky tam, kde je to možné při kompilaci.
Použijte atribut @inline(__always). Je to nápověda kompilátoru, aby se pokusil vložit tělo funkce na místo volání, čímž se vyhne nákladům na volání funkce. Ne vždy přináší výhody.
@inline(__always)
func myInlinedFunction() {
// ...
}