问答详情
源自:3-5 完整外部排序

small.out 文件大小的问题

p := createPipeline("small.in", 400, 5)

我的small.in 是400B, 用以上的代码,也可以生成排序后的结果small.out是400B

但是我如果用这个代码 p := createPipeline("small.in", 400, 4),此时small.out是416B。

400都可以整除5和4啊?为什么不一样?还是实际是400/(5*8), 400/(4*8)才是真正需要整除的?


提问者:拧壶冲 2020-10-10 17:51

个回答

  • home_11
    2021-06-27 21:38:31

    1B(Byte 字节)=8bit(位)

    uint64(无符号64位整数)=64bit=8Byte

    程序中读写都是讲一个uint64转成8Byte然后按字节读写

    分4块读取:每次读取8Byte,每块大于等于100B才结束,最后每块读取了13个uint64,排序后写入文件52个uint64共512Byte