-1

假设我将通过运行单个脚本将 100 个浮点数保存在一个列表中,很可能需要一些内存来处理。因此,如果此代码每次都作为应用程序的要求执行,则会影响性能,所以我的问题是如何保持效率以获得性能。

样机代码:

def generate_lglt():
    float1, float2 = 27.2423423, 12.2323245
    lonlats = []
    for val in range(100, 0, -1):
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
    print lonlats

谢谢。

4

2 回答 2

8

瓶颈出现在意想不到的地方,所以永远不要仅仅因为你认为它可能是尝试改进的正确代码而优化代码。你需要做的是

  1. 编写您的程序,使其完全运行。
  2. 开发测试以确保您的程序是正确的。
  3. 确定您的程序是否太慢。
    • 你很有可能会在这一步退出。
  4. 开发实际运行程序的性能测试。
  5. 使用该cProfile模块在其实际性能测试中分析代码。
  6. 找出哪些算法改进可以提高代码的性能。
    • 这通常是最能提高速度的方法。
  7. 如果您使用最佳算法来完成这项工作,请执行微优化。
    • 用 C 重写关键部分(可能使用 Cython)通常比 Python 中的微优化更有效。
于 2010-03-16T20:01:20.900 回答
2

如果 generate_lglt() 将被调用很多次,您可能希望避免在每次调用代码时重新生成相同的 range(100,0,-1)。您可能希望在某处缓存生成的范围并一遍又一遍地使用它。

此外,如果您要在未完成每次迭代的情况下退出 for 循环,请使用 xrange 而不是 range。

于 2010-03-16T19:23:31.323 回答