【发布时间】:2015-10-27 14:49:16
【问题描述】:
所以问题很简单,内联究竟是做什么的,什么时候应该在 Elixir 中使用它?
内联是指:@compile {:inline, myfun: 1}
附:我知道 Erlang 文档 here 中有关于该主题的信息,但我仍然不确定我是否理解。
【问题讨论】:
标签: elixir
所以问题很简单,内联究竟是做什么的,什么时候应该在 Elixir 中使用它?
内联是指:@compile {:inline, myfun: 1}
附:我知道 Erlang 文档 here 中有关于该主题的信息,但我仍然不确定我是否理解。
【问题讨论】:
标签: elixir
当你内联一个函数时,它的调用将在编译时被函数体本身替换。这可用于从特定函数调用中挤出最后一点性能,从而消除单个函数调用的开销。不幸的是,它也会使堆栈跟踪更难阅读,因为原始函数实际上并不存在于已编译的代码中。所以当你使用内联时,你应该真的确信内联函数是防弹的,否则你会让你的代码更难调试。
除非您有一个一直调用的简单函数,否则我真的不会为内联而烦恼。 Take a look at the Elixir source code to get a feeling 在这种情况下使用内联 - 您会发现对列表、地图等进行操作的基本函数,并且可能会被非常频繁地调用。请注意,即使在 Elixir 源代码中,也很少使用内联,因为您只会在极少数情况下从中受益。
【讨论】: