相关疑难解决方法(0)

列表推导和功能函数是否比"for loops"更快?

在Python的性能方面,是一个列表理解,还是比for循环更快的map(),filter()和reduce()等函数?从技术上讲,为什么它们"以C速度运行",而"for循环以python虚拟机速度运行"?

假设在我正在开发的游戏中,我需要使用for循环绘制复杂且巨大的地图.这个问题肯定是相关的,因为如果列表理解确实更快,那么为了避免滞后(尽管代码的视觉复杂性),这将是一个更好的选择.

python performance for-loop list-comprehension map-function

130
推荐指数
7
解决办法
7万
查看次数

列表理解优于for循环的优势是什么?

什么是使用的优势列表理解forPython中循环?

主要是为了让它更具人性化,还是有其他理由使用列表理解而不是循环?

python list-comprehension

24
推荐指数
1
解决办法
7824
查看次数

为什么局部变量访问速度比Python中的类成员访问速度快?

在尝试解决更复杂的问题时,我开始将访问速度与局部变量与成员变量进行比较.

这是一个测试程序:

#!/usr/bin/env python

MAX=40000000

class StressTestMember(object):
    def __init__(self):
        self.m = 0

    def do_work(self):
        self.m += 1
        self.m *= 2

class StressTestLocal(object):
    def __init__(self):
        pass

    def do_work(self):
        m = 0
        m += 1
        m *= 2

# LOCAL access test
for i in range(MAX):
    StressTestLocal().do_work()

# MEMBER access test
for i in range(MAX):
    StressTestMember().do_work()
Run Code Online (Sandbox Code Playgroud)

我知道实例化StressTestMemberStressTestLocal每次迭代可能看起来不错,但在建模程序中这些基本上是Active Records是有意义的.

经过简单的基准测试,

  • LOCAL访问测试:0m22.836
  • 会员访问测试:0m32.648s

本地版本的速度提高了大约33%,同时仍然是课程的一部分.为什么?

python performance benchmarking

13
推荐指数
2
解决办法
3686
查看次数

Python列表理解昂贵

我试图找到列表理解的效率,但它看起来比正常的功能操作更昂贵.谁能解释一下?

def squares(values):
    lst = []
    for x in range(values):
        lst.append(x*x)
    return lst

def main():
    t = timeit.Timer(stmt="lst = [x*x for x in range(10)]")
    print t.timeit()
    t = timeit.Timer(stmt="squares",setup="from __main__ import squares")
    print t.timeit()

    lst = [x*x for x in range(10)]
    print lst
    print squares(10)



----Output:---
2.4147507644
0.0284455255965
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Run Code Online (Sandbox Code Playgroud)

对于相同的输出,与列表理解相比,正常函数在非常短的时间内计算.

我认为列表理解更有效.

python list-comprehension

10
推荐指数
1
解决办法
2159
查看次数