Sza*_*lcs 1 c floating-point performance
即使在索引到数组时,一致使用浮点类型来表示整数有哪些潜在的缺点?假设一个面向性能的 C 库的上下文。可以在 64 位整数和 64 位浮点数之间进行选择。
我对做这样的事情感到不舒服,因为doubles 不是用于索引的,并且使用工具来完成其设计目的之外的事情通常会带来风险。但我想了解是否有合理的理由避免这样做。
为了解决显而易见的问题:
double与[ ]运算符一起使用。double无法表示与 64 位整数类型一样多的不同整数,但在可预见的将来,53 位可能足以用于索引数组。事实上,浮点类型的这种用法在野外随处可见。例如,R 没有 64 位整数,并且通过使用doubles 进行索引来支持大型数组。在编写必须与 R 互操作的代码时,必须考虑是否也这样做。
为了与(几乎任何语言,甚至库)进行互操作,我建议创建一个互操作层或组件来处理它可以解决的所有问题,并记录它不能解决的问题,本质上抽象了(部分)互操作。