草庐IT

PERFORMANCE

全部标签

php - 在 foreach 循环参数中分解数组

foreach(explode(','$foo)as$bar){...}对比$test=explode(','$foo);foreach($testas$bar){...}在第一个例子中,它是在每次迭代中explode$foo字符串,还是PHP将它保存在内存中并在它自己的临时变量中展开?从效率的角度来看,创建额外的变量$test是否有意义,或者两者几乎相等? 最佳答案 我可以做出有根据的猜测,但让我们试试看!我认为可以通过三种主要方法来解决这个问题。进入循环前分解赋值在循环内爆炸,不赋值字符串分词我的假设:可能由于分配而消耗更多内存

php - PHP Globals 的安全替代品(良好编码实践)

多年来我一直在使用global$var,$var2,...,$varn对于我的应用程序中的方法。我已经将它们用于两个主要实现:获取已设置的类(例如数据库连接),并将信息传递给显示到页面的函数。示例:$output['header']['log_out']="LogOut";functionshowPage(){global$db,$output;$db=(isset($db))?$db:newDatabase();$output['header']['title']=$db->getConfig('siteTitle');require('myHTMLPage.html');exit(

php - XDebug 能否单独跟踪探查器调用所花费的时间?

我正在使用XDebug作为PHP应用程序的分析器。我遇到过这样一种情况,XDebug严重改变了结果,以至于它们无用。这里有一个简单的例子来演示这个问题:functionfoo(){$x=1;}functionbar(){foo();}测试A:$t0=microtime(true);for($i=0;$i测试B:$t0=microtime(true);for($i=0;$i所以,这些是我得到的结果(以秒为单位):profiler|profiler>profilerdisabled|enabled>results---------------------------------------

PHP – 慢速字符串操作

我有一些非常大的数据文件,出于业务原因,我必须进行大量的字符串操作(替换字符和字符串)。这是不可避免的。替换数量达到数十万。它花费的时间比我希望的要长。PHP通常非常快,但我正在执行如此多的此类字符串操作,以至于它正在减慢速度并且脚本执行会持续几分钟。这很痛苦,因为脚本经常运行。我做了一些测试,发现str_replace最快,其次是strstr,然后是preg_replace。我还尝试了单独的str_replace语句以及构建模式和替换数组。我正在考虑隔离字符串操作操作并用不同的语言编写的想法,但我不想在该选项上投入时间却发现改进可以忽略不计。另外,我只懂Perl、PHP和COBOL,

php - 包括其中包含函数的 PHP 文件是否会减慢包含那些即使不被使用的页面?

这基本上是我所有的问题,如果我的php页面有5,000-10,000行代码用于特定目的,在我的例子中是图像上传管理(裁剪等),它会减慢我的其余文档到将它们包含在不使用它们的每个页面上?基本逻辑告诉我它当然会,但同时我不是专家,所以我不知道php的行为是否与我理解的不同。 最佳答案 include和require语句使PHP也编译/解释您包含的文件。这确实需要一些计算,但在99%的情况下这无关紧要……除非您的站点非常受欢迎并且节省计算时间很重要。如果是这种情况,您可以使用所谓的PHP加速器(如XCache或APC)轻松解决此问题。这些

php - 这个短语 "Try to make you architecture more horizontal rather than vertical"是什么意思?

我刚听过http://www.zend.com/webinar/PHP/70170000000bAuS-webinar-php-performance-principles-and-tools-20100218.flv(关于PHP性能的Zend网络研讨会)。我不明白这句话是什么意思“尽量让你的架构更水平而不是垂直”(见截图)alttexthttp://img2.pict.com/4e/4d/18/3358007/0/screenshot2b153.png谢谢。 最佳答案 水平缩放VS的一个简单例子。仅与数据库的垂直缩放给出这样的示例

php - PHPMailer 中的持久 SMTP 连接

如何在PHPMailer中启用持久的SMTP连接?我会发送很多电子邮件,因此使用持久连接可能会提高性能。 最佳答案 如果您的服务器被列入黑名单,我们真的不在乎,对吧?这就是如何实现你想要的。只需将SMTPKeepAlive属性设置为true并在批量发送后隐式调用SmtpClose()方法。$phpMailer=NewPHPMailer();$phpMailer->isSMTP();$phpMailer->SMTPKeepAlive=true;for(...){//Sendyouremailsrightaway[...]}$phpMa

php - 未使用的 use 语句会降低性能吗?

我想知道我的类中未使用的use语句是否会影响我的php网站的性能?php是否在开始时或需要时包含所有类?如果是第二选择,那么我认为它不会影响我系统的性能。例如:未使用Use语句'DbConnector'usemodel\adapter\DbConnector; 最佳答案 不,use语句不会触发加载类(它甚至不会触发自动加载器)。它只是声明了一个类的简称。我假设在CPU和RAM方面的成本大约是几个CPU周期和几个字节。 关于php-未使用的use语句会降低性能吗?,我们在StackOver

php - SplFixedArray 的性能真的比数组好吗?

我正在测试SplFixedArray构建一个包含星期几的数组,我得到以下结果:使用传统数组:这对你有意义吗? 最佳答案 如thisarticle作者执行的基准测试所示:可以得出结论,SplFixedArray的内存占用确实更小,但仅在大量数组元素时才明显。因为SplFixedArray在技术上是aninstanceofaclass同样,与传统数组相反,如果由SplFixedArray实现,这就是导致小数组实际上消耗更多内存的原因,但是由于这额外的几百字节保持不变,因此随着数组大小的增长它变得无关紧要。旁注:不要进行微观优化,并非每把

php - 在 PHP 中使用动态变量实例化对象的含义

使用以下形式在PHP中声明新类实例的性能、安全性或“其他”含义是什么这是一个人为的例子,但我已经看到这种形式在工厂(OOP)中使用,以避免有一个大的if/switch语句。首先想到的问题是你失去了将参数传递给构造函数的能力(谎言。谢谢Jeremy)闻起来像eval(),它带来了所有安全问题(但不一定是性能问题?)还有什么其他含义,或者除了“RankPHPHackery”之外还有哪些搜索引擎术语可以用来研究这个? 最佳答案 在运行时解析的问题之一是你让操作码缓存(如APC)变得非常困难。不过,就目前而言,如果您在实例化内容时需要一定程