暂无图片
1GB的4字节整数,执行一次快速排序需要多少时间?
我来答
分享
中天
2023-03-01
1GB的4字节整数,执行一次快速排序需要多少时间?

1GB的4字节整数,执行一次快速排序需要多少时间?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新

Google的Jeff Dean提出了一种排序性能分析方法:排序时间=比较时间(分支预测错误)+内存访问时间。快速排序过程中会发生大量的分支预测错误,所以比较次数为2的28次方*log(2的28次方)约等于2的33次方,其中,约二分之一的比较会发生分支预测错误,所以比较时间为1/2*2的33次方*5ns=21s;另外,快速排序每次分割操作都需要扫描一遍内存,假设内存顺序访问性能为4GB/s,所以内存访问时间为28*1GB/4GB=7s。因此,单线程排序1GB4字节整数总时间约为28s。

暂无图片 评论
暂无图片 有用 8
暂无图片
大大刺猬

我的内存sysbench压测1K(seq), 速度约为 4GB/s
使用numpy排序1GB的4字节整数, 耗时20秒
image.png
sysbench压测参数

sysbench --test=memory --memory-block-size=1k --memory-total-size=100G --memory-access-mode=seq run

python代码

import sys,random,time import numpy as np aa_4b = np.array([random.randint(1,2**31) for x in range(1024*1024)], dtype=np.int32) #1M, 再翻8翻(2^8=256) for x in range(8): aa_4b = np.append(aa_4b,aa_4b) aa_4b.size sys.getsizeof(aa_4b) starttime = time.time() aa_4b.sort() endtime = time.time() print('cost:',round((endtime-starttime),3),' s')
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏