如何根据对象内存地址进行比较

类似python的is, 对于无论是mutable还是immutable的数据, 都compare by reference.
===不行, 对于immutable数据会按bit比较.

能举个例子说一下具体行为么? ===的文档表述好像有点问题,Julia里可以直接用pointer_from_objref提取ref。

就是我想要根据pointer_from_objref后的结果进行比较.

it = "123"
p1 = pointer_from_objref(z)
=> Ptr{Nothing} @0x00007f73c9d528b0
p2 = pointer_from_objref(it)
=> Ptr{Nothing} @0x00007f73c9d528b0

这种比较的预期行为就是根据@后面的那个数字进行比较.

类似于这个样子吗?

julia> ≣(x, y) = UInt(pointer_from_objref(x)) == UInt(pointer_from_objref(y))
≣ (generic function with 1 method)

julia> a = "123"; b = "123";

julia> a === b
true

julia> a ≣ b
false

julia> a ≣ c
true

这应该是对的。你看这开销如何?python写多,看着invoke觉得贵。。

开销至少比Python快吧。233

julia> @btime $a ≣ $b
  1.883 ns (0 allocations: 0 bytes)
true

但是考虑到我使用地址比较的目的就是为了性能,要是速度还没有bitwise eq快,我还搞啥自行车。。。

哦哦。。。如果可能,用 Symbol 应该比较比 String 快。或者用 GitHub - JuliaString/InternedStrings.jl: Fully transparent string interning functionality, with proper garbage collection 什么的。。。