当前位置:  开发笔记 > 编程语言 > 正文

在Elixir中使用"_var"而不是"_"时的性能影响?

如何解决《在Elixir中使用"_var"而不是"_"时的性能影响?》经验,为你挑选了2个好方法。

_在Elixir中使用a命名任何未使用的变量是一般规则.这样做会阻止绑定到该变量的任何内容.

然而,我注意到一种广泛使用的带有下划线的前缀模式,表示一个被忽略的参数,形式为_tail(目的是提供一个关于变量是什么的提示).

如果您尝试访问,则通过shell中的警告来鼓励这种情况_tail:

警告:设置后使用下划线变量"_tail".前导下划线表示应忽略变量的值.如果是这样,请重命名变量以删除下划线

但这是抓住了; _tail将变量绑定到它,而使用_它时则不然.

这是否意味着在使用除_?之外的任何其他内容命名忽略的变量时会有性能损失?或者Elixir仍然_在幕后绑定,并且只是在任何访问尝试时出错?

编辑:它看起来像Erlang的编译器优化了明确这种情况下,治疗_*_,因此不存在开销,来源:http://erlang.org/doc/efficiency_guide/myths.html



1> José Valim..:

鉴于每个人都已经放弃了免责声明而不担心这种性能行为,答案是:如果没有使用变量,编译器会注意到它,编译后的字节码就会忽略它,就好像你使用过一样_.这就是为什么如果你这样做x = 1而且永远不会x得到编译器警告的原因.



2> michalmuskal..:

事实上,Erlang(以及Elixir)对_变量有特殊的行为.但除非你测量到这对你的应用程序来说是一个性能问题,否则我不会太担心这个问题.我想如果你在函数内部做任何有趣的事情,那么绑定变量的开销将是完全无关紧要的.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有