2013-10-22 29 views
0

我们正在使用python/Django进行Web开发。虽然开发阶段wilson编码我倾向于把print声明很多地方检查代码的控制流。 并与打印语句相同的代码被上传服务器, 我知道日志记录是更适合的地方,但我发现自己更舒服print打印声明是否会使网站的性能问题

我想知道几行代码会使网站变慢,如果变慢。 可以说,我有100行代码,并在此之后添加了5条print声明。另一种研究它的方式是我写了一行105行代码。那么从这个意义上说,我不应该改变(我想)。

这会使网站变慢吗?

+0

我所做的是有一个称为调试的变量,每次我打印说如果调试:打印x。然后当你完成后,你可以设置调试错误,而不用担心它。 –

+3

建议:让自己适应日志记录和'assert'语句。 – rlms

回答

1

是的,因为参数需要在输出之前转换为字符串,可以是一个昂贵的操作。

但是,使用print会导致另一个问题。一些WSGI容器,特别是其中的mod_wsgi,不喜欢默认发送到标准输出的任何东西,因此会在发生这种情况时引发异常。您可以通过打印到stderr来解决此问题,但性能问题将保持不变。

0

打印到控制台是总是慢...

def computationally_expensive_function(x): 
    xl = reversed(range(x)[1:]) 
    y = x 
    for z in xl: 
     y = y * z 
    return y 

In [16]: %timeit computationally_expensive_function(5) 
1000000 loops, best of 3: 1.46 us per loop 

In [17]: %timeit print computationally_expensive_function(5) 
<lots of prints> 
100 loops, best of 3: 1.87 ms per loop 

如果我带的400阶乘,然后每次迭代计算上升到147uS,并打印上去3.5ms。这意味着,仅仅打印结果会使其在小型案例中长达100倍,在长案例中长达20倍。

但是......与任何基于性能的表现一样,这并不意味着您有问题。如果它处于紧密的环路中 - 非常糟糕。如果它的代码每隔几分钟左右调用一次,额外的1ms开销就不会注意到。