Avatar
omochimetaru 4/17/2019 2:48 AM
inlinableな関数gが非ジェネリックで、内部の関数fがジェネリックなとき、そうなりますね。
2:49 AM
inlinableな関数gもジェネリックパラメータを持っていて、それをfに転送しているだけの場合は、inlienableをつけなかったとしても結果は同じだけど、
2:49 AM
gが非ジェネリックな場合は、gの中から呼び出すfが専用に最適化されるから、inline化しないほうが良いって事に。
2:50 AM
あ、でも、そういうケースは
2:50 AM
fの @_specialize(T = Int) の使いどころか?
2:51 AM
fのスペシャライズ版が生成され、かつ、存在が明示的になるから、gからf<Int> が呼ばれるようになって、 その特殊化版を呼ぶgが、利用側でインライン化されるなら
2:51 AM
遅くならない。 そこまで理解してないと遅くなっちゃう可能性があるのはそうですね。