小编Bar*_*ant的帖子

Erlang'catch'表达与try/catch在效率方面

有人对此提出了类似的问题,但并未按照相同的条款提出问题.

我试图安全地解码base64二进制文件,在一个上下文中,输入可能不是二进制,甚至是base64编码.

Erlang说让它崩溃并处理它 - 如果我这样做,最有效的方法是什么.效率在这个系统中非常重要.

我知道要避免try/catch,因为它构建了一个完整的堆栈跟踪 - 但是,这个上下文的catch关键字是否合理?catch关键字更快/更有效吗?

在诸如的功能中

safe_decode(Binary) ->
    case catch base64:decode(Binary) of
        <<Result/binary>> -> {ok, Result};
        {'EXIT', _} -> {not_base64, Binary}
    end.
Run Code Online (Sandbox Code Playgroud)

这真的比尝试捕获更有效吗?如何在效率很重要的系统中最好地处理这种情况,即需要尽可能有效地处理涉及构建堆栈跟踪和/或需要比快乐路径更多处理的崩溃.

我只是在学习二郎,所以也许答案就是盯着我.

erlang performance runtime-error exception processing-efficiency

5
推荐指数
1
解决办法
506
查看次数