【问题标题】:Julia Universal Comparison OperatorJulia 通用比较运算符
【发布时间】:2021-11-27 00:55:30
【问题描述】:

我在编写代码时通常使用 Crystal。在 Crystal 中,有 <=> 比较运算符。用法很简单:

p! 404 <=> 405

这将在我的终端中打印以下内容:

404 <=> 405 # => -1

打印的值为-1,但是如果等式中的整数被交换,它会打印1,因为405大于404。如果整数相等,它会打印0

我想在我正在编写的 Julia 程序中使用类似的东西,但似乎找不到合适的运算符。我当然可以使用 if-else if-else 逻辑,但我真的只关心将值存储在数据库中。

【问题讨论】:

    标签: julia operators


    【解决方案1】:

    这是你想要的吗?

    julia> cmp(404, 405)
    -1
    
    julia> cmp(404, 404)
    0
    
    julia> cmp(405, 404)
    1
    

    【讨论】:

    • 这个问题在 1.7 中已经修复。 cmp 使用 islesssign 使用 &lt;isless 在 1.7 版本中变得更快
    • 在我的电脑上使用 1.7 时,我看到两者都是 6 微秒
    • 这些时间是 Julia 编译器的问题(在这两种情况下都没有生成最佳代码 - 此评论适用于 Julia 1.6)。更快的是cmp.(A, B)sign.(A .- B)。仍然sign 有点快(不是很多)。请注意,sign 方法不等同于 cmp 用于浮点数。考虑例如。 a=NaNb=0.0a=-0.0b=0.0
    • 不,广播融合,所以没有额外的中间体。广播很棒。
    • 你应该阅读这个:julialang.org/blog/2017/01/moredots
    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2021-10-02
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多