|
|
1
1
在这两种情况下,性能基本相同。
在第一个(void*实现)中,您需要查找值+取消引用指针。这是两个指令。
|
|
2
1
查看以下按利弊分类的解决方案(感谢鲁本帮助我思考)。。。我已经为我的用例实现了选项2和5,这有点笼统;如果您需要非常具体的一次性数据结构,我建议您选择选项4。选项3是最灵活的,但对代码来说微不足道,也是最慢的。选项4是最快的。选项5有点慢,但在阵列大小上具有灵活性,易于通用。 关联数组结构指向类型指针数组: 赞成的意见 不需要失败值,不需要显式强制转换,不需要数组的编译时大小 欺骗 代价高昂的双重deref,需要通用库代码
关联数组结构包含的数组
赞成的意见 不需要失败值,不需要通用库代码
欺骗
代价高昂的双重deref,显式强制转换
关联数组结构指向的数组
赞成的意见 没有泛型库代码,不需要数组的编译时大小
欺骗
代价高昂的三重deref,显式强制转换
关联数组结构保存类型化值的数组: 赞成的意见 廉价的单个deref,不需要显式强制转换,键和条目连续分配 欺骗 需要泛型库代码,必须提供失败值,如果未使用VLA,则需要数组的编译时大小 关联数组结构指向类型化值的数组: 赞成的意见 不需要显式转换,灵活的数组大小 欺骗 代价高昂的双解引用,需要通用库代码,必须提供失败值,如果不使用VLA,则需要数组的编译时大小 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |