gpt4 book ai didi

julia - `ifelse` 和 Julia 中的三元运算符有什么区别?

转载 作者:行者123 更新时间:2023-12-03 20:23:50 26 4
gpt4 key购买 nike

假设我有这个代码:

cond = true
a = cond ? 1 : 2
b = ifelse(cond, 1, 2)
这两种操作有什么区别?

最佳答案

在你写的例子中,没有有效的区别。但是,如果这两个分支比简单的整数文字更复杂,那么就会有区别:

julia> f() = (println("calling f()!"); 1)
f (generic function with 1 method)

julia> g() = (println("calling g()!"); 2)
g (generic function with 1 method)

julia> cond ? f() : g()
calling f()!
1

julia> ifelse(cond, f(), g())
calling f()!
calling g()!
1
换句话说, ifelse只是一个正常的功能。就像所有其他函数一样,它的参数总是被评估。三元运算符的语法等效于:
if cond
f()
else
g()
end
请注意,在某些情况下,这可能会导致处理器使用的指令不同(即,将分支更改为查找),这可能会对性能产生微妙的影响,超出两个分支中代码的成本(或不那么微妙)如果在 @simd 循环内)...但通常 Julia 和 LLVM 通常足够聪明,如果可能的话,无论哪种方式都可以做最好的事情。

关于julia - `ifelse` 和 Julia 中的三元运算符有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65741521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com