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秒

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回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

