php 自定义函数和原生函数执行效率问题

从网上看到的,有些时候原生函数的效率可能没有自定义的函数高

例如range函数,用它来初始化一个键值与键名相等的,且键名差值相同的数组,原生函数使用效率反而不高,

这可能是因为range函数不仅仅实现了这一种需求,这个函数还可以接受一些其他参数去执行算法,返回值

所以当我们仅需要某个功能时,可能使用自己的函数会运行更快,原生函数会经过各种判断,才能执行想要的方法(自己想的,可能不对)

例:

function ranges($step = 5, $max = 20)
{
if ($step < 1)
return array();

$array = array();
for ($i = $step; $i <= $max; $i += $step)
{
$array[$i] = $i;
}

return $array;
}

$time[‘begin‘] = microtime(true);
//$tmp = range(0,1000000,3);
$tmp = ranges(0,1000000,3);
$time[‘end‘] = microtime(true);

echo $time[‘end‘] - $time[‘begin‘].‘s‘."\r";
echo (memory_get_peak_usage())."M";

自定义:

7.8678131103516E-6s 0.59011840820312M

原生

0.069043874740601s 68.172889709473M

时间: 2024-10-12 09:05:18

php 自定义函数和原生函数执行效率问题的相关文章

尽可能使用PHP原生函数?

今天在阅读kohana源码中的Arr类的时候发现了这样一个函数 /** * Fill an array with a range of numbers. * * // Fill an array with values 5, 10, 15, 20 * $values = Arr::range(5, 20); * * @param integer $step stepping * @param integer $max ending number * @return array */ public

内联函数_为什么能提高效率

1.去年年底我听见这样一句话“将所有函数内联,执行效率能够更高,函数本不应该存在”,对于一个大学才接触编程,大一看了一年动漫,大二看了一年小说,大三才开始拿起<C++程序设计>(狗都不愿意吃的青春啊),毕业不到一年的小菜鸟我来说,这简直是毁三观的陈述,我认为他的话是错误的,但是说不出充分的原理,编码也是如此,写的代码自己都有一种奇怪的感觉,那么它一定有问题或者存在更为合理优越的实现. 2.内联函数的基本工作原理的将函数调用替换为函数实体,直观上能①减去函数调用的开销,但是这也可能导致代码体积膨

类型和原生函数及类型转换(一)

一.内置类型: 空值:null 未定义:undefined 布尔值:boolean 数字:number 字符串:string 对象:object 符号:symbol(ES6新增) 1.null类型的值类型是object,因为JavaScript语言这一历史遗留问题,如果要查看null的类型不能直接使用typeof,需要设置复合条件来查询: var a = null; (!a && typeof a === "object");//true 2.function作为obj

函数指针及函数指针数组的妙用

笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度.数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性.我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数,在每个函数里面都要作类似的处理.若按通常做法,会写出如下代码: void MyFuntion( char* buff

计算一段函数的执行效率

int main() { clock_t startTime = 0, endTime = 0;    startTime = clock(); //要执行的函数 endTime = clock();    int lastTime = endTime - startTime; } 计算一段函数的执行效率

自定义window的原始函数。

这个问题的提出是因为最近有一个项目,设计部门把alert()的界面进行了设计,要求使用此设计进行开发.我以前真不知道alert()这种东西还能自定义,这不是原生的吗?原生的还能变?但是随着学习的深入,我发现是可以的,下边是我的思路: 首先我们知道所有的全局变量都是window对象的属性,所有的全局函数都是window对象的方法,alert()的执行可以这么干:window.alert();对于window对象来说,alert就是alert()函数的引用,我们重新给alert设置一个自定义函数的引

php使用file函数、fseek函数读取大文件效率分析

php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下. 1. 直接采用file函数来操作 由于 file函数是一次性将所有内容读入内存,而PHP为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下限制只能最大使用内存16M,这是通过php.ini里的 memory_limit = 16M 来进行设置,这个值如果设置-1,

Mysql函数(内置函数,自定义函数)

简述 SQL:结构化查询语言,是一门编程语言,是用于管理数据库的编程语言. 元素:数据,数据类型,变量,函数,流程控制,运算符,注释. 注释: 行: # –[空格] 块: /* */ select * from swpu_stu #where id=2; ; select * from swpu_stu -- where id=2; ; 结束符: select * from swpu_stu where id=2\g select * from swpu_stu where id=2\G 可以使

原生函数和强制类型装换

var a = new String("abc"); console.log(typeof a); //是Object,而不是string 使用new String("abc"); 创建的是字符串 abc 的封装对象,而不是基本类型值"abc". 封装对象 由于基本类型值没有.length和.toString()这样的属性和方法,需要通过封装对象才能访问,此时JavaScript会自动为基本类型值包装一个封装对象,如: var a = "