pypy比python运行慢_为什么pypy中的代码比默认的python解释器慢?

本文探讨了在解决特定组合问题时,PyPy相对于Python的性能表现。通过计算不同数量玩家的联盟组合,发现随着玩家数量增加,PyPy的运行时间显著增长,尤其是在n=9时。对比Python的运行时间,PyPy在相同任务上显得较慢,甚至在n=9时导致程序崩溃。文章旨在理解PyPy的性能瓶颈,并寻求优化方案。
摘要由CSDN通过智能技术生成

给定若干玩家n,我需要找到H,其中每个元组都是联盟的组合(例如(1,2,3)是玩家1、2和3的联盟。((1,2,3),(4,5),(6,))是一个联盟的组合-也是元组),它尊重这个规则:每个玩家只出现一次,而且只出现一次(即只在一个联盟中出现)。

P、 每一个联盟的组合在代码中称为布局。在

在开始的时候,我写了一段代码,我计算了所有联盟的所有组合,并检查了每个组合的规则。问题是,对于5-6个玩家来说,联盟组合的数量已经太多了,以至于我的电脑出了故障。

为了避免很大一部分的计算(所有可能的组合,循环和ifs),我写了以下内容(我测试了它,它相当于前面的代码片段):from itertools import combinations, combinations_with_replacement, product, permutations

players = range(1,n+1)

coalitions = [[coal for coal in list(combinations(players,length))] for length in players]

H = [tuple(coalitions[0]),(coalitions[-1][0],)]

combs = [comb for length in xrange(2,n) for comb in combinations_with_replacement(players,length) if sum(comb) == n]

perms = list(permutations(players))

layouts = set(frozenset(frozenset(perm[i:i+x]) for (i,x) in zip([0]+[sum(comb[:y]) for y in xrange(1,len(comb))],comb)) for comb in combs for perm in perms)

H.extend(tuple(tuple(tuple(coal) for coal in layout) for layout in layouts))

print H

说明:假设n=3

首先,我创建所有可能的联盟:

^{pr2}$

然后我用明显的组合初始化H:每个成员在他自己的联盟中,每个成员在最大联盟中。在H = [((1,),(2,),(3,)),((1,2,3),)]

然后计算所有可能的布局形式:combs = [(1,2)] #(1,2) represents a layout in which there is

#one 1-player coalition and one 2-player coalition.

我计算排列。

最后,对于每个烫发和每个梳子,我计算出不同的可能布局。Iset结果(layouts)以便删除重复项并添加到HH = [((1,),(2,),(3,)),((1,2,3),),((1,2),(3,)),((1,3),(2,)),((2,3),(1,))]

比较如下:

python script.py4: 0.000520944595337秒

5: 0.0038321018219秒

6: 0.0408189296722秒

7: 0.431486845016秒

8: 6.05224680901秒

9: 76.4520540237秒

pypy script.py4: 0.00342392921448秒

5: 0.0668039321899秒

6: 0.311077833176秒

7: 1.13124799728秒

8: 11.5973010063秒

9: 发脾气了

为什么pypy那么慢?我该换什么?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值