写一个php程序,在php执行程序之前打印一个时间戳到毫秒级.然后for循环1000万次.学完之后再在底下打一个时间戳就能看到说整体的运行时间.希望能帮到你.
我们在前面的php高效写法提到,尽量不要复制变量,特别是数组.一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G.下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:
[php] view plain copy print?
php
echo memory_get_usage() , 'br';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i1000; $i◆◆) {
$a[$i] = $i ◆ $i;
}
$mid = memory_get_usage();
$end = memory_get_usage();
echo 'argv:', ($mid - $start)/1000 ,'bytes' , 'br';echo 'argv:',($end - $mid)/1000 ,'bytes' , 'br';输出是:
大概了解1000
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;echo 'argv:', ($mid - $start )/10000,'byte' , 'br';$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;echo 'argv:', ($end - $mid)/10000 ,'byte' , 'br';得到:
[cpp] view plain copy print?
#include "stdafx.h"
//#include stdio.h
int main() {
printf("int:%d\nlong:%d\ndouble:%d\nchar*:%d\nsize_t:%d\n",sizeof(int), sizeof(long),
sizeof(double), sizeof(char *),
sizeof(size_t));
return 0;
在PHP中都使用long类型来代表数字,没有使用int类型大家都明白PHP是一种弱类型的语言,它不会去区分变量的类型,没有int float char *之类的概念.
我们看看php在zend里面存储的变量,PHP中每个变量都有对应的 zval, Zval结构体定义在Zend/zend.h里面,其结构:
typedef struct _zval_struct zval;
struct _zval_struct {
/* Variable information */
PHP使用一种UNION结构来存储变量的值,即zvalue_value 是一个union,UNION变量所占用的内存是由最大成员数据空间决定.
typedef union _zvalue_value {
long lval; /* long value */double dval; /* double value */struct { /* string value */char *val;
int len;
} str;
HashTable *ht; /* hash table value */zend_object_value obj; /*object value */} zvalue_value;
HashTable结构体定义在Zend/zend_hash.h.
typedef struct _hashtable {
zend_bool persistent;//1
unsigned char nApplyCount;//1
zend_bool bApplyProtection;//1
#if ZEND_DEBUG
#endif
} HashTable;
typedef struct bucket {
Bucket
//php 计算地图上两个坐标之间的距离
/**
* 计算两组经纬度坐标 之间的距离
* return m or km
*/
{
$s = $s * EARTH_RADIUS;
$s = round($s * 1000);
if ($len_type -- 1)
$s /= 1000;
return round($s, $decimal);
年龄=(当前年-生年) - 1;
IF (当前月生月 || 当前月=生月 当前日生日) 年龄=年龄◆1;
在PHP写的程序,主要是注意变量类型转换,下面的例子程序:
list($by,$bm,$bd)=explode('-',$birth);
$cm=date('n');
$cd=date('j');
$age=date('Y')-$by-1;
if ($cm$bm || $cm=$bm $cd$$bd) $age◆◆;
echo "生日:$birth\n年龄:$age\n";
补充:我这个能满足你的要求,是非常精确的.
以上就是土嘎嘎小编为大家整理的php精确估算相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!