关于的PHP中 define()效率问题

最近在网上看了一篇文章:

DEFINE是大家常用的定义常量的方法,但是DEFINE是存在一定的性能问题的。虽然一般的项目中可能会觉得DEFINE也不会很多,影响不是很大。

但是,实际上,由于require的使用和嵌套等,会在不知不觉中引用到很多的DEFINE。 例如,公司某个最近发布的项目中,一个典型的页面会引用到接近400个DEFINE,使用APD进行profiling后会发现DEFINE消耗的CPU非常靠前。

我们进行了一些对比测试:
准备了4个php文件

////////////////////
d1.php
<?php
DEFINE('D1', 1);
DEFINE('D2', 2);
DEFINE('D3', 3);
...
?>
////////////////////
d2.php
<?php
Class d2
{
Var $d1 = 1 ;
Var $d2 = 2 ;
Var $d3 = 3 ;
...
?>
////////////////////
d3.php
<?php
Class d3
{
const d1 = 1 ;
const d2 = 2 ;
const d3 = 3 ;
...
?>
////////////////////
s1.php
<?php
$i=0;
$i+=1;
$i+=1;
$i+=1;
...
?>
////////////////////

每个文件都是重复1000项,以使对比效果明显。

主程序分别requrie这四个文件,对比进行压力测试。对比测试的结果如下:

////////////////////
d1.php - QPS 1050 左右
d2.php - QPS 1300 左右
d3.php - QPS 2500 左右
s1.php - QPS 3500 左右
////////////////////

结论:

很明显,DEFINE的性能是最差的,而且对比来看,是非常的差。 因此,建议在需要定义常量的地方,可以建立一个专门的常量类。

测试环境:

apache 2.0.59 php 5.2.1
HP DL360 XEON 3.0G*2 2G

我想问下,定义常量到底用哪种方法好啊?难道这篇文章说的是真的吗??

我有点怀疑,因为我看到大多少网站,包括DISCUZ等等有名的论坛,都用define函数来定义的.

自定义常量用得不是非常多,很少发生这种问题。

上面的几种用法里面,确实自定义常量比较耗资源,但也没必要搞得不敢用它。

每一个函数的使用都会占用一定的系统资源,赋值运算当然比用函数定义常量省资源。只要尽量少用就是了。不要搞得如文中所有一个站点程序有400多个自定义常量就行了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-12
http://www.phpsu.com/phpfunction/list_4_1.html
这里都是函数的问题,可以参考,呵呵
第2个回答  2008-06-15
这个东西不好说,要看实际情况才能定夺的。

关于的PHP中 define()效率问题
自定义常量用得不是非常多,很少发生这种问题。上面的几种用法里面,确实自定义常量比较耗资源,但也没必要搞得不敢用它。每一个函数的使用都会占用一定的系统资源,赋值运算当然比用函数定义常量省资源。只要尽量少用就是了。不要搞得如文中所有一个站点程序有400多个自定义常量就行了。

请问大家一个关于PHP,define()函数的问题
IN_UCHOME 这种布尔型的常量 一般用做开关。也就是经常会放在if()上面使用

PHP define疑问
define("SOME_INTER_VALUE",true);然后在其它文件里引用。如在 b.php 里这样引用:include("global.php");\/\/必须要包含以后才能用 if(!defined("SOME_INTER_VALUE")) exit('Access Denied');或 if(!SOME_INTER_VALUE) die("Access Denied');回答补充:不管是什么变量,要实现在两个文件中传递...

PHP中用define定义的常量是否全局有效
define容易产生意想不到的错误,有时可能并不希望在任何地方都替换。const显然对字符串等地方就不会有效果

php中两个define怎么使用?defined ( '' ) || define ( '', '')
defined('APP_PATH') || define('APP_PATH', '.\/apps\/');如果常量APP_PATH已定义,则使用已定义的常量值,否则定义APP_PATH常量的值为.\/apps\/字符串。defined 判断常量是否已定义,返回Bool值。define 定义常量 这条语句利用了||(或逻辑)的短路特性,即前一个为true值,则后一个不会被执行。

php问题 if(!defined('MVMMALL') || !defined('IN_ADMINCP')) exit...
define(IN_ADMINCP,1);后面的程序可以用defined检测IN_ADMINCP是否已定义。这样的语句可用在一些后台管理,用户如果直接在浏览器输入某个后台程序的地址,比如用户管理模块,通常我们不允许未经登陆就访问该程序。这时我们可以先写个文件admincp.inc.php,该文件完成用户权限检查后,定义常量,比如define(IN_...

深入php define()函数以及defined()函数的用法详解
function defines a constant.define()函数的作用是:定义一个常量。Constants are much like variables,except for the following differences:常量[constant]与变量[variable]有很多相似的地方,因此,很容易混淆;下面,我们列举一下常量[constant]与变量[variable]之间的不同点:•A constant's valu...

php define常量 函数作用域问题
可以将所有的常量定义在一个配置文件当中,然后进行调用,按照你这种一个函数调用一次,再说了,函数也是调用的,你这种写法很少的,做什么事儿别太可以了。例如 define("HOST","localshot"); 定义一个常量,数据库的主机名。

php defined是什么意思
在PHP中,defined()是一个用于检查常量是否已定义的函数。它用于确定给定名称的常量是否已在代码中使用define()函数定义。具体来说,defined()函数接受一个字符串参数,表示要检查的常量名称,并返回一个布尔值。如果给定的常量名称已定义,则返回true,否则返回false。以下是使用defined()函数的示例:if (...

define(计算机专业用语)详细资料大全
如果定义在common.h文件中,其他文件通过#include "common.h"包含后,该宏定义在包含的文件中都起作用。6. 常量类似于变量,但它们的值在设定后无法更改。常量名不需要开头的美元符号($)。7. PHP中的define()函数用于定义一个常量,常量值只能是字元串或数字,且一旦定义后无法更改。

相似回答
大家正在搜