【发布时间】:2013-09-19 13:35:46
【问题描述】:
我正在对一个大文件(10 GB)中的 128 位记录进行排序。算法工作正常,目前使用uint64_t,其中两个等于一个记录。这是在现代 64 位系统上。
为了代码的可读性,我想知道是否可以创建一个类似typedef struct u128t {uint64_t hi, uint64_t} u128t 的结构来代替两条 64 位记录。这将使数组索引和赋值更清晰,但我必须实现一个比较器函数。
这是一个可移植的解决方案,我是否应该期望它以与原始实现相同的速度运行?
进一步阅读:
【问题讨论】:
-
使用内联比较器和不完全脑死的编译器应该不会有明显的性能下降。唯一可以确定的方法当然是尝试和测量。
-
由于除了简单的比较之外还使用
struct u128t,使用机器的字节序对字段uint64_t hi和uint64_t lo进行排序可能很有用。使其他 128 位操作更容易。
标签: c performance algorithm sorting