我在一个大文件(10秒的GB)中对128位记录进行排序。算法工作良好,目前使用的是uint64_t,其中两条等于一条记录。这是在现代64位系统上。
为了代码的可读性,我想知道是否可以使用像typedef struct u128t {uint64_t hi, uint64_t} u128t这样的结构来代替两个64位的记录。这将使数组索引和分配更加清晰,但我必须实现比较器功能。
这是一个可移植的解决方案吗?我应该期望它以与原始实现相同的速度运行吗?
进一步读:
发布于 2013-09-19 13:48:38
使用struct就行了。
我会这样做:
#if COMPILER_WHICH_SUPPORTS_128_BIT_TYPE
typedef __uint128 u128t;
#define COMPARE(a, b) ((a) == (b))
#else
typedef struct {
uint64_t hi;
uint64_t lo;
} u128t;
#define COMPARE(a, b) MyCompareFunction((a), (b))
#endifhttps://stackoverflow.com/questions/18896152
复制相似问题