Avatar
omochimetaru 4/17/2019 2:57 AM
gGeneric = inlinable : ジェネリックなfを呼び出すgGeneric が展開されるだけ、遅い gInt そのまま : gInt 内部に 特殊化された f の呼び出しが展開される、早い gInt = inlineable : ジェネリックなfを呼び出す gInt が展開されるだけ、遅い gInt = inleinable + f specialized(Int): Intに特殊化された f を呼び出すgInt が展開される、早い ( このパターンが僕の仮説)
2:58 AM
gGeneric = inlineable + f specialized(Int) : Intに特殊化されたfは生成されるけど、gGenericから呼び出すf はジェネリックT な fにすぎないので、遅い
2:59 AM
gGeneric specialized(Int) : Int に特殊化されたgが生成されて、その中で f が特殊化されるので早い gGeneric specialized(Int) + inlineable : Int に特殊化されたgが生成されるけど f はジェネリックなので ジェネリックな f の呼び出しが展開されるだけで遅い
3:00 AM
gGeneric specialized(Int) inlinable + f specialized (Int) : Int に特殊化されたgとIntに特殊化されたfがあるので展開されて早い
3:00 AM
String / Substring x Self / S / T で 2^3 = 8 通りあるんですか・・・
3:01 AM
Specializeに組み合わせ表記があったら嬉しいですね
3:01 AM
@_specialize(where Self == String x Substring, S == String x Substring , T == String x Substring) (edited)
3:01 AM
↑これで8通りを書き並べたのと同じになる