相关疑难解决方法(0)

Python 2.x陷阱和地雷

我的问题的目的是通过Python加强我的知识库并更好地了解它,包括了解它的错误和意外.为了保持特定的内容,我只对CPython解释器感兴趣.

我正在寻找类似于从我的PHP地雷 问题中学到的东西,其中一些答案对我来说是众所周知的但是一对夫妇的边界恐怖.

更新:显然有一两个人感到不安,我问了一个已经在Stack Overflow之外部分回答的问题.这里的某些妥协是URL http://www.ferg.org/projects/python_gotchas.html

请注意,此处的一个或两个答案已经是上面引用的网站上的原始答案.

python

61
推荐指数
16
解决办法
1万
查看次数

为什么在引用值上调用函数(例如strlen,count等)这么慢?

我刚刚在PHP中发现了一些非常奇怪的东西.

如果我通过引用将变量传递给函数,然后在其上调用函数,那就非常慢.

如果循环遍历内部函数调用且变量很大,则它可能比通过值传递变量慢许多个数量级.

例:

<?php
function TestCount(&$aArray)
{
    $aArray = range(0, 100000);
    $fStartTime = microtime(true);

    for ($iIter = 0; $iIter < 1000; $iIter++)
    {
        $iCount = count($aArray);
    }

    $fTaken = microtime(true) - $fStartTime;

    print "took $fTaken seconds\n";
}

$aArray = array();
TestCount($aArray);
?>
Run Code Online (Sandbox Code Playgroud)

这在我的机器上运行大约需要20秒(在PHP 5.3上).

但是,如果我将函数更改为按值传递(即function TestCount($aArray)代替function TestCount(&$aArray)),则它会在大约2毫秒内运行 - 实际上要快10,000倍!

对于其他内置函数(例如strlen用户定义的函数)也是如此.

这是怎么回事?

php performance reference pass-by-reference

12
推荐指数
1
解决办法
1446
查看次数

Php函数参数错误抑制,empty()isset()仿真

我很确定这个问题的答案是否定的,但是如果有一些PHP大师的话

是否有可能以一种方式编写一个函数,其中可以传入无效参数或不存在的变量,并且php不会在不使用 '@'

很像空和isset.您可以传入刚刚编写的变量,也不会出错.

ex:

empty($someBogusVar); // no error

myHappyFunction($someBogusVar); // Php warning / notice
Run Code Online (Sandbox Code Playgroud)

php error-handling error-suppression

9
推荐指数
2
解决办法
3915
查看次数

性能会在php中使用自动加载并搜索类文件吗?

我一直在努力如何最好地将类包含到我的PHP代码中.路径通常是一个问题,但几分钟前我发现这个问题显着有助于此.现在我正在阅读__autoload并认为它可以使我的应用程序开发过程变得更加容易.问题是我喜欢将文件夹结构保持为独立的功能区域,而不是将所有内容都放入通用/ lib文件夹中.因此,如果我覆盖自动加载以深入搜索包含所有子文件夹的类文件夹,我可以期待什么性能命中?

显然这将取决于文件夹结构的规模,深度和类的数量,但一般来说,我要求中等规模的项目会导致问题.

php performance

9
推荐指数
2
解决办法
5237
查看次数