我正在向某些函数添加类型,即为了速度和清晰度。我对此有几个问题。我在这里问他们所有人,因为我看过其他帖子这样做。问题以粗体显示,以便于识别。
\n我想向一个函数添加类型,用于计算向量中负值的数量。我想让它与 Int 和 Float 兼容,就像非类型化函数一样。虽然方便,但 Chris Rackauckas 建议不要这样做,请参阅如何声明可以具有 int 和 float 的数组类型的第一条评论,
\n\n\n您想同时使用整数和浮点数吗?由于性能原因,不建议这样做。但如果您愿意,可以使用 Union{Int64,Float64} 作为类型。
\n
如果由于某种原因需要多态函数,那么更好的方法似乎是通过Union
. 然而,对于这种特殊情况,由于Number
和是和Real
的超类型,我认为它们会比非类型化版本稍快一些。Int64
Float64
然而,至少在我的简单测试中,情况似乎并非如此。我测试了一个没有参数类型的函数,另一个带有Any
,以及两个带有类型Number
和 的函数Real
,两者都是Float64
和的超类型Int64
。
notypes\nmedian time: 1.006 ms (0.00% GC)\nmean time: 1.152 ms (12.60% GC)\n\nany\nmedian time: 1.054 ms (0.00% GC)\nmean time: 1.197 ms (12.05% GC)\n\nunion\nmedian time: 1.062 ms (0.00% GC)\nmean time: 1.210 ms (12.09% GC)\n\nnumber\nmedian time: 1.110 …
Run Code Online (Sandbox Code Playgroud)