MoYi123
287 天前
n = 3000000
id = [i for i in range(n)]
原价 = [random.random() * 99999999 for _ in range(n)]
厂家折扣 = [random.random() * 1000 for _ in range(n)]
卖家折扣 = [random.random() * 1000 for _ in range(n)]
买家折扣 = [random.random() * 1000 for _ in range(n)]
汇率 = [random.random() * 10 for _ in range(n)]
table = list(zip(id, 原价, 厂家折扣, 卖家折扣, 买家折扣, 汇率))
def sort_by(row):
id, 原价, 厂家折扣, 卖家折扣, 买家折扣, 汇率 = row
return 原价 - 厂家折扣 - 卖家折扣 - 买家折扣 * 汇率
import time
start = time.time()
table.sort(key=sort_by)
print(time.time() - start) # 1.0334241390228271
300w 行用 python 全部排序也才 1 秒, 数据库里 c/c++的排序怎么可能要 10 秒呢?
况且 limit n 的情况下只需要 O(n)的排序算法. python 里的还是 O(nlogn)的.
你该不会是把数据全拉到本地再计算的吧.