向PHP要效率――加快你的代码执行速度
脚本语言效率都是低下的,PHP也不例外。而效率的高低实际上,都是在你的每一行代码中节省或浪费的。所以,这里向你讲解一些基本的效率常识,让你的代码执行速度快起来。
(注:看过N多版本的优化PHP代码的建议,觉得不系统,也不全面,这里只是给出平常极需要注意的一些。)
一、字符串问题
1、字符中拼接大于数组的implode, 也快于sprintf
你可以执行一下下面的代码:
<?php /** * Simple function to replicate PHP 5 behaviour */ function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $start=microtime_float(); // standard string append $str = ''; for ($i = 300000; $i > 0; $i--) { $str .= 'String concatenation. '; } $end = microtime_float(); echo("<br/> t i m e :" . round( $end - $start ,2) ."<br/>"); $start=microtime_float(); // array join $str = ''; $sArr = array(); for ($i = 300000; $i > 0; $i--) { $sArr[] = 'String concatenation. '; } $str = implode('',$sArr); $end = microtime_float(); echo("<br/> t i m e :" . round( $end - $start ,2) ."<br/>"); ?>
?
我机器的输出结果是:
t i m e :0.14
t i m e :0.25
2、字符串替换
同时,如果不能拼接,才考虑替换。而替换方式,要按以下的优先方式考虑写代码:
sprintf 快于 str_replace 快于 preg_replace 快于 strstr
3、字符串查找,字符串比较:
网上有人测试的结果是:
Results
ereg .956
preg_match .050
strstr .222
strpos .033
可见:
strpos 快于 preg_match 快于 strstr 快于 ereg
有人说,strstr快,但,preg_match_all肯定比for循环中的strstr快,如果能够explode,则还要比preg_match_all快
3、字符串输出:
echo 快于 print, 这不用讲了。 但是,如果将echo用到最快?
$foo = 'John SMITH';?
echo "Hello $foo, welcome on my blog.";?
echo "Hello " . $foo . " welcome on my blog.";?
echo 'Hello ' . $foo . ' welcome on my blog.';?
echo 'Hello ', $foo , ' welcome on my blog.';
我想,你能看得懂的,最后一个最快。
二、数组问题:
foreach 快于 for 这是大家都明白的。 不仅如此。如果真的用for ,你这样写是最好的
for($i=0,$j=count($array);$i}
前面说了,数组用来做字串拼接,会慢,因为,你走了两循环。但很多操作,如果能用数组协助完成,则会很快。
比如:array_mar('trim',$array)肯定比你写for,foreach要快很多。
能先用explode拆成数组,最好不要在for循环中使用strpos.
in_array函数的效率问题。如果in_array频繁使用,而数组很大,建议将这个数组排序,然后,用fast_in_array
这是PHP手册中的用户添加的函数。(注:有待测试结果,小数组,in_array还是快于它)
This function is five times faster than in_array(). It uses a binary search and should be able to be used as a direct replacement:
<?php function fast_in_array($elem, $array) { $top = count($array) -1; $bot = 0; while($top >= $bot) { $p = floor(($top + $bot) / 2); if ($array[$p] < $elem) $bot = $p + 1; elseif ($array[$p] > $elem) $top = $p - 1; else return TRUE; } return FALSE; } ?>
?
用数组改变你的所有能改变的控制结构。这不仅包括三元运算符,还有:if,switch。这还有另一好处,那就是能培养你的软编码模式的思维。
Instead of
?? $class = $class == 'even' ? 'odd' : 'even'
we have
?? $flip = array('even' => 'odd', 'odd' => 'even');
?? $class = $flip[$class];
??
三、函数问题
使用正名函数,不要用函数的别名。别名在PHP中是用于PHP的推广(比如split,join是VB中有的函数,implode,explode则是正名函数),或用于向旧版本兼容。一般速度没有正名的快。
??
count 快于 sizeof
is_integer 快于 is_int
floatval 快于 doubleval
implode 快于 join
ini_set 快于 ini_alter
当然,也有极个别的例外,比如:fputs 快于 fwrite, 我觉得,可以不管它。

float最大值:1、在C语言中,float最大值是3.40282347e+38,根据IEEE 754标准,float类型的最大指数为127,尾数的位数为23,通过这种方式,最大浮点数为3.40282347e+38;2、在Java语言中,float最大值是3.4028235E+38;3、在Python语言中,float最大值是1.7976931348623157e+308。

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

float精度能到6到9位小数。根据IEEE754标准,float类型可以表示的有效数字位数为大约6到9位。需要注意的是,这只是理论上的最大精度,实际使用中由于浮点数的舍入误差,float类型的精度往往会更低。在计算机中进行浮点数运算时,由于浮点数的精度限制,可能会出现精度损失的情况。为了提高浮点数的精度,可以使用更高精度的数据类型,如double或者long double。

常见的数据库float长度有:1、MySQL中的float类型长度,可以是4个字节或8个字节;2、Oracle中的float类型长度,可以是4个字节或8个字节;3、SQL Server中的float类型长度,固定为8个字节;4、PostgreSQL中的float类型长度,可以是4个字节或8个字节等等。

C语言中的float是一种数据类型,用于表示单精度浮点数,浮点数是一种用科学计数法表示的实数,可以表示非常大或非常小的数值。float类型的变量可以存储小数点后6位有效数字的数值,在C语言中,使用float类型可以进行浮点数的运算和存储,其变量可以用于表示小数、分数、科学计数法等需要精确表示的实数,与整数类型不同,浮点数可以表示小数点后的数字,并且可以进行小数的四则运算。

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

float属性取值有left、right、none、inherit、clearinline-start和inline-end。详细介绍:1、left,元素向左浮动,即元素会尽可能地靠近容器的左边,其他元素会围绕在其右侧;2、right,元素向右浮动,即元素会尽可能地靠近容器的右边,其他元素会围绕在其左侧;3、none默认值,元素不浮动,会按照正常的文档流排列等等。

可以通过Python、JavaScript、Java、C#、Ruby和PHPstring转换成float。详细介绍:1、Python,输入float_number = float(string_number);2、JavaScript,输入float_number = parseFloat(string_number);;3、Java等等。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.
