如何使简单的for循环消耗更少的内存?

时间:2013-06-25 15:37:11

标签: python performance memory-efficient

def odd():
    for i in xrange(0, 100):
        if i % 2 == 1:
            print i

我有这个小功能。 我想知道:

  1. 如果有办法让它消耗更少的内存?
  2. 您可以使用哪些工具和技术来有效地衡量和改善内存消耗?
  3. 在查看以下问题后,我想到了这个问题:odd numbers

2 个答案:

答案 0 :(得分:2)

最近有关于内存消耗测量的answer on Stackoverflow

至于循环的内存消耗,它可以忽略不计,并且不依赖于范围的上限,因为xrange()实际上不会存储比它将返回的下一个值多得多。

答案 1 :(得分:0)

不确定是否实际上是关于内存消耗的问题以及使其更有效的算法,或者它是否与特定语言相关以及它如何在后台执行操作。

如果是关于内存消耗和改进解决方案的算法,一个好的解决方法是使用带有一些简单条件的递归(或迭代)解决方案。

示例而不是遍历循环中的100个数字(我不是一个python开发人员,所以生病了在javascript中编写这个简单的解决方案,可以在chrome的控制台中轻松测试)你可以尝试这样的事情:

    var iteration = 0;
var odd = function(val,max){
    iteration++;
    //base case
    if ( val > max ) return;
    if ( val % 2 == 1 ){
        console.log(val);
        odd(val+2,max);
    }else odd(val+1,max);   
}

odd(0,100);
console.log("Total iterations: "+iteration);

它只会导致52次迭代,而不是100次。