PHP函数执行成本表

PHP函数执行成本表,php,execution-time,micro-optimization,Php,Execution Time,Micro Optimization,有一个参考表显示每个php函数的执行成本 我知道执行时间受许多因素的限制,不可能确定唯一的值,但我正在寻找一个“意识形态”表 比如说, is_dir() = cost 3 is_file() = cost 2 (举个例子;) 如果我不记得不好的话,对于C,有一个表,其中包含每个操作所需的cpu周期 编辑:我阅读了您的所有评论,因此有我需要的任何表格 不管怎样,我知道 is_dir('/');//is faster than is_dir('/a/very/long/path/to/check/

有一个参考表显示每个php函数的执行成本

我知道执行时间受许多因素的限制,不可能确定唯一的值,但我正在寻找一个“意识形态”表

比如说,

is_dir() = cost 3
is_file() = cost 2
(举个例子;)

如果我不记得不好的话,对于C,有一个表,其中包含每个操作所需的cpu周期

编辑:我阅读了您的所有评论,因此有我需要的任何表格

不管怎样,我知道

is_dir('/');//is faster than
is_dir('/a/very/long/path/to/check/');
但是,我很难接受这种情况(如果我正确理解你的话,这是可能的)


对于PHP,不能像这样“指令计数”。即使使用C,它也取决于libc实现。

您不能像PHP那样“指令计数”。即使使用C,它也取决于libc实现。

我不知道有这样一个表

一个函数的成本会因输入的不同而变化很大

由array_unique()处理的1000项数组将比使用5项输入数组的同一函数花费更长的时间

如果您对优化应用程序感兴趣,可以使用microtime来计时每个函数调用的执行时间

它看起来像这样

$starttime = microtime();
is_dir('/var/foo');
$stoptime = microtime();
echo "is_dir cost: ".($stoptime-$startime);

我不知道有这样一张桌子

一个函数的成本会因输入的不同而变化很大

由array_unique()处理的1000项数组将比使用5项输入数组的同一函数花费更长的时间

如果您对优化应用程序感兴趣,可以使用microtime来计时每个函数调用的执行时间

它看起来像这样

$starttime = microtime();
is_dir('/var/foo');
$stoptime = microtime();
echo "is_dir cost: ".($stoptime-$startime);

这样的图表既没有帮助也不准确。在您的示例中,功能的时间安排在很大程度上取决于本地归档系统的细节,很快就会变得毫无意义

衡量性能的唯一真正方法是构建代码,然后计时。比现在快吗?在一种情况下,一种可能比另一种更好,而在另一种情况下,另一种可能更快,这取决于特定于其中代码的各种因素


使用探查器对代码计时,并获取一些对服务器环境中的项目准确的有意义的数据。

这样的图表既没有帮助也不准确。在您的示例中,功能的时间安排在很大程度上取决于本地归档系统的细节,很快就会变得毫无意义

衡量性能的唯一真正方法是构建代码,然后计时。比现在快吗?在一种情况下,一种可能比另一种更好,而在另一种情况下,另一种可能更快,这取决于特定于其中代码的各种因素


使用探查器对代码计时,并获取一些有意义的数据,这些数据对于服务器环境中的项目是准确的。

我认为没有函数成本表这样的东西,因为同一个函数的成本可能会因上下文而异

例如(但仅以其为例!):

也就是说,评估函数调用成本是一种非常好的优化方法


使用分析器可以帮助您认识到代码中的某些特定函数调用比您希望的要慢,重新思考/重新编写这些部分可以大大加快速度。

我认为没有函数成本表这样的东西,因为同一个函数可能会有非常不同的成本,这取决于上下文

例如(但仅以其为例!):

也就是说,评估函数调用成本是一种非常好的优化方法


使用分析器可以帮助您认识到代码中的某些特定函数调用比您希望的要慢,重新思考/重新编写这些部分可以大大加快速度。

我认为这样的表无论如何都不可能存在

首先,时间在很大程度上取决于投入。但对于各种各样的函数来说,这并不是一个问题。我们可以指出算法的复杂性:O(n^2),O(n log(n))等等。我们有很好的数学仪器来处理这种事情

更重要的是环境。您无法预测功能将工作多长时间,因为您不了解所有环境。NFS卷上的文件_exists()速度将不如本地ext3卷上的快。您无法预测请求将传输到MySQL服务器的时间,等等


所以你应该做的是测量,测量,测量。仅依赖于您自己的测量和您的环境。这是唯一的办法。

我认为这样的表格无论如何都不可能存在

首先,时间在很大程度上取决于投入。但对于各种各样的函数来说,这并不是一个问题。我们可以指出算法的复杂性:O(n^2),O(n log(n))等等。我们有很好的数学仪器来处理这种事情

更重要的是环境。您无法预测功能将工作多长时间,因为您不了解所有环境。NFS卷上的文件_exists()速度将不如本地ext3卷上的快。您无法预测请求将传输到MySQL服务器的时间,等等


所以你应该做的是测量,测量,测量。仅依赖于您自己的测量和您的环境。这是唯一的方法。

最接近的方法可能是通过的操作码分析,以前称为。莎拉·戈莱蒙(Sarah Golemon)有一些关于这方面的好信息。

最接近的可能是通过的操作码分析,以前称为。Sarah Golemon有一些关于这个东西的好信息。

使用register\u tick\u函数和declare(ticks=1) 它们自PHP4以来就一直存在,并提供低级指令计数。我将想象这是通过计算指令来实现的
is_dir('/'); //will be very fast
is_dir('/symbolic_link/symbolic_link_on_a_remote_fs/'); //will be way slower