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