2009-01-06 39 views
-5

这篇文章不是一个真正的问题,但它可能是有用的共享一些编码技巧。优化PHP字符串连接

这是我想与你分享的一个。我将展示4个同样的事例。但只有最后一个才是最好的。

$foo = 'John SMITH'; 

echo "Hello $foo, welcome on my website."; 

echo "Hello " . $foo . " welcome on my website."; 

echo 'Hello ' . $foo . ' welcome on my website.'; 

echo 'Hello ', $foo , ' welcome on my website.'; 

我相信大家都知道,echo '$foo'将无法​​正常工作,不过,我敢肯定,你使用双引号来显示一个简单的信息。 这是不好的

好吧,让我们开始:第一个是坏的(以及第二个),因为使用双引号强制PHP扫描字符串以寻找要完成的替换(我的意思是变量)。

第二个是好一点,因为PHP没有替代品。

第三个,因为简单的引用而更好,这样语言知道他可以发送文本而不需要处理,但是“坏”的东西是使用了连接(点运算符,就像第二个例子中那样) 。

最后一个使用简单的引号和昏迷操作符。为什么这个解决方案更好?

那么,使用第三种解决方案会发生什么?

php创建一个字符串,其中包含"Hello ",那么它必须放大它,才能将foo的内容变量(“John SMITH”),然后再放大它以放入" Welcome on my website."句子。 然后,echo可以利用这一点,来...回音吧:)

而在第四之一,echo做的唯一的事情是发送“你好”,然后$ foo的内容,那么“欢迎我的网站。”到输出,就这些! 因为回声只是发送文本,而不创建一个字符串,必须放大以包含整个文本(这将是凹的,必须增长(因为连接),然后显示。)

我会尽力找回一些基准,并把它们放在这里。

费尔自由评论或反应,原谅我的英语,这不是我的母语。

+1

你有这方面的表现数据? – brian 2009-01-06 15:23:25

+1

这是有用的信息,但您应该以Stack Overflow的问题/答案格式显示它。 – rjzii 2009-01-06 15:31:18

+1

@Rob,完全相反,这些信息完全没用。在现实生活中,你会从这样的“优化”中获得**没有任何**。 – 2011-02-24 07:14:52

回答

7

这是不值得的。你可能会遇到一些即使设法使字符串连接速度提高了30%,整个应用程序的加速比率也提高了0,1%(不要把它加在字面上;速度可以忽略不计);大部分时间将花费在数据库查询或模式中复杂的逻辑。

27

它是完全不相关,其溶液效果更好。电脑速度快,CPU周期便宜,因此毫秒优化毫无意义。唯一真正的优化是帮助您更快地读取代码,这样您可以节省宝贵的时间并专注于实际提供工作代码。

26

创建一个小的(但仍然吮吸:)基准,并运行它产生以下结果:

0.0022029876709 
0.00211095809937 
0.00213599205017 
0.00551700592041 

的最后一个方法显然是最慢的。

11

优化的三个原则是:

  1. 还不优化。
  2. 不要优化。
  3. 不要优化。

只有在了解了放慢速度之后,才能保存最后一件事。

否则,你会把车放在马前,可以这么说。