【问题标题】:How to make these nested for-loop more efficient?如何让这些嵌套的 for 循环更高效?
【发布时间】:2012-12-23 07:48:36
【问题描述】:

我有两个列表:

  1. ActiveExchange = []
  2. ActiveStock = []

我的代码本质上是非常连续的,我正在尝试对其进行优化:

for exchange in ActiveExchange:
    for stock in Activestock:
        ...
        ...
        ...

但是,由于 for 循环,它似乎效率很低。我该怎么做才能让它更高效地运行?

【问题讨论】:

    标签: performance optimization for-loop python-2.7


    【解决方案1】:
    1. 是否只是看起来效率低下,还是您运行它并且花费了太长时间?如果您只是认为它效率低下 - 测试它。并且不要优化不存在的问题。您可以更有效地利用时间。

    其他任何内容都取决于大小写。喜欢:

    1. 如果您在 ActiveStack 中为 ActiveExchange 中的每个元素搜索一个或两个项目,请将 ActiveStack 设为哈希。
    2. 如果您有 if 语句,并且该语句仅依赖于一个变量,请将其设为外部变量。这样你就可以优化分支预测。这可以由编译器自动完成。
    3. 如果您想操作/读取所有对 - 您无法对其进行优化。

    【讨论】:

    • 是的,我运行了它,但运行 5 组数据大约需要 200 秒。我担心的是,如果它达到 100 组,则需要 1000 秒。
    【解决方案2】:

    C/C++ 和 Python 都有行优先的数组。如果您正在遍历数组、列表、向量等,请务必这样做:

    for i in range(25):
      for j in range(25):
        A[j][i] *= 1
    

    而不是:

    for i in range(25):
      for j in range(25):
        A[i][j] *= 1
    

    这可以使性能提高 3-6 倍。

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2020-07-06
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2019-08-08
      相关资源
      最近更新 更多