评论作者:alexmiller
我认为循环/recur 中不应该支持除原始 long 或 double 之外的类型。假设这是正确的,这将是一个预期的行为。
在最后一次主要的数值/原始重构中,决定只支持原始 long 和 double。这的后果之一是原始 int 循环难以优化——我遇到这种情况最常见的时机是当在字符串、集合或数组操作(所有这些都是 int 索引)中进行与 Java 互操作的紧密循环时。
关于 unchecked-inc 和 unchecked-inc-int,有两个变体的主要理由不是性能,而是行为。特别是,散列操作通常期望得到 32 位 int 溢出语义,而不是 64 位 int 溢出语义。
总之,我认为在所给的示例中,我不会使用 int 或 unchecked-inc-int 编写它,如果您在寻找最佳性能,我将使用 long 和 unchecked-inc。