每天进步一点点:PHP的microtime()函数 & 浮点数显示精度

在昨天帖子《PHP 问号表达式效率问题》中,我使用microtime(true)来获得程序执行的起始点和终止点。


(图源 :pixabay)

咳咳,我一直对这个函数的命名挺纠结的,明明返回的是秒,非要在名字带个micro,总让我以为返沪的是微秒(microseconds)。

其实这个函数的功能是返回带微秒的时间,PHP中声明如下:

mixed microtime ([ bool $get_as_float = FALSE ] )

关于返回值,文档中是这样描述的

By default, microtime() returns a string in the form “msec sec”, where sec is the number of seconds since the Unix epoch (0:00:00 January 1,1970 GMT), and msec measures microseconds that have elapsed since sec and is also expressed in seconds.

If get_as_float is set to TRUE, then microtime() returns a float, which represents the current time in seconds since the Unix epoch accurate to the nearest microsecond.

也就是说,如果不加参数TRUE,那么返回的是”msec sec”这样的形式,其中msec也就是用秒表示,也就是说是小数形式的秒。

如果加上参数TRUE,就更好理解喽,就是带小数的秒喽。

让我们写段简单的代码看一下

1
2
3
4
5
6
<?
$mt=microtime();
$mt_f=microtime(true);
var_dump($mt);
var_dump($mt_f);
?>

输出如下:

可是为何浮点数形式表示的秒,小数点后边只有两位啊?这还怎么精确到微秒啦?其实这只是由于浮点数显示精度设定导致的,并不影响运算(比如求时间差值)精度。

如果想让其更高精度的显示,可以试试如下代码:

1
2
3
4
5
6
7
8
9
<?
echo ini_get("precision"), "\n";
ini_set("precision",16);
$mt=microtime();
$mt_f=microtime(true);

var_dump($mt);
var_dump($mt_f);
?>

输出如下:

可见之前默认的浮点数显示精度为12位,我们设置为16位后,就显示到小数点后6位啦。

好了,就啰嗦这些啦,其实我本来想多啰嗦一些的,可是浏览器崩溃了,这些都是我重新敲的,这心情啊,可酸爽了。


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: 每天进步一点点:PHP的microtime()函数 & 浮点数显示精度

朋友要常联系

我有一美女邻居,和我们相处得特别好,后来搬离我们小区,整天忙事业忙得不可开交,除了逢年过节互相问候打个招呼聊聊近况之外,联系得没做邻居时那么频繁了。


(老照片:我和我的朋友们)

前两天,看她朋友圈发一些大海、椰林以及暖阳的照片,我点了个赞,随口问了一句“去哪玩了?”,她马上给我回复:“三亚”,并说:“明天我给你们快递一箱芒果回去。”

哎呀,这怎么好意思呢,我让她好好玩即可。可是她执著地要给我寄芒果,说非常想念我们,总是到处跑,一直没能聚上。然后今天她就微信发快递单号给我,发了顺丰给我,让我等着吃吧。哎,自从炒币,好久没吃芒果了。

我另外一个朋友在大学任教,有一天突然想起我们好久没有联络了,于是微信上问他在忙啥?他回答说正在给研究生上课,让我有空去找他玩,然后一起出去吃饭。

哎呀,这怎么好意思呢?于是我赶紧开车去了校园,在教室找个角落坐下来看他给学生们讲课,等下课后一起去了学校东边的饭店,水足饭饱(开酒不喝车)。自从炒币,好久没吃这么饱了。


(老照片:我的朋友和我)

我还有一个朋友开个科技公司,整天忙得是不可开交,前两天我在微信群里艾特他,问他最近咋样?我这个朋友告诉我最近接了好几个大项目,忙得晕头转向,然后非要介绍几个软件开发的项目给我,我倒是很想接,可是我开发不出来啊。

然后又提到他把他以前的汽车卖掉了,换了豪车,说剩一堆空调过滤器、空气滤清器、机油滤清器,哪天有空给我送过来(他之前汽车和我同一型号),好感动啊。自从炒币,好久没给汽车做保养了。

所以呀,朋友就要时常联系,否则友情就会淡了,就会没有水果、没有酒菜、有一大堆的赠品了。


其实,我是想感谢我的这些好朋友,换一种语调写出来,该不会挨骂吧?哈哈。人常说人生得一知己足矣,斯世,当同怀视之,我有这么多好友,真的非常荣幸。


This page is synchronized from the post: 朋友要常联系

每天进步一点点:PHP 问号表达式效率问题

在写PHP代码时,遇到简单的判断之类的,总是喜欢用问号表达式而不是IF…ELSE…分支判断。


(图源 :pixabay)

今天突发奇想,问号表达式和IF…ELSE…到底谁的效率高呢?然后百度了一下,咦,竟然没人讨论这个问题,看来就我自己闲的难受。

既然闲的难受就写段简单的代码测试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$loops = 100000;

$start=microtime(true);
for($i=0; $i<$loops; $i++)
{
($i>$i-1)?$j=0:$j=1;
($i<$i+1)?$k=0:$k=1;
($i>$i-1)?$j=0:$j=1;
($i<$i+1)?$k=0:$k=1;
}
echo round(microtime(true) - $start, 6), "\n";

$start = microtime(true);
for($i=0; $i<$loops; $i++)
{
if($i>$i-1) $j=0; else $j=1;
if($i<$i+1) $k=0; else $k=1;
if($i>$i-1) $j=0; else $j=1;
if($i<$i+1) $k=0; else $k=1;
}
echo round(microtime(true) - $start, 6), "\n";
?>

刷了几遍网页后,输出的结果大致都是类似如下情况

也就是说问号表达式要比IF…ELSE..慢上一倍左右,不过,讲真,运行10万轮,每轮还运行了四次,不过耗时接近0.04秒,也就是说其实这点效率差异根本是无关紧要的。

所以,用问号表达式还是IF…ELSE…并没有多大区别,浪费不了多少时间,倒是我闲的做这个测试,浪费了自己不少时间,够跑无数次问号表达式啦!


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: 每天进步一点点:PHP 问号表达式效率问题

无聊刷微信表情包

哎,行情不好,干啥都没心情,尤其我还在暴跌之前补了点仓,简直了。

无聊的时候刷刷微信表情包,还能开心一点,比写程序或者做事情,要强多了。说到做事情,想起了下边这个表情。

经典表情,团队在做事,不要看价格,拿住!等归零

还有中秋节时候上述表情的变种,团队在做月饼,不要看价格,拿住!等归零
(假装有图,我找不到这个图了)

不过我觉得现在回头再看,这个图才是最好的

多想这样一哭,钱就会回来

然而现实却是

其实,虽然现在币市很惨,但是梦想还是要有的

但是躺着却是根本睡不着

本想刷刷手机看看热闹,结果情不自禁地打开行情软件

好不容易入睡结果却很快醒过来

醒来后第一件事还是刷行情,却发现

其实,我也曾赚过钱呢!

然而学艺不精,最终还是被割了

除了绝望,还能有啥办法

大概这可能就是人生吧

其实啊,梦想啊,人生啊,都无所谓,关键是我现在真的饿

如果哪位大佬打赏我一点,让我买碗面条,我就会非常满足了

如果是个女大佬,我可以考虑以身相许

其实我还是挺帅的

炒币压力这么大,但是我还是一点不显老

怎么样?美女大佬快出现吧。

不过我一点也不强求

即便没有女大佬出现,我还是有其它出路可以选择的


你有没有啥经典的表情想分享的?来一起斗图吧。


This page is synchronized from the post: 无聊刷微信表情包

不知不觉,声望分到达76了

其实好多天以前,声望分就到了75.99了,我整天盼着这最后的0.01,但是始终不突破,久而久之,我就忘了去关注了。今天一查,声望分的实际数值已经76.036了,看样子升级上来已经好多天了。

声望分越高,升级越困难,我看了一眼曲线,从75升级到80,大概需要4-5倍从25升级到75的声望分数值。也就是说,从75升级80,相当于将5个号码从开始开始升级到75。😨

看了一下几个时间点:

从70升级到75用了约9个月,而从75升级到76则用了月7个月,好漫长啊,看来升级到80,遥遥无期啦。


(图源 :pixabay)

感谢大家一直以来的支持,更多煽情的话就不说啦,求见证人票吧。😂


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: 不知不觉,声望分到达76了

升级本地EOS节点至1.4.3

看到Eos-mainnet的Github上终于发布了Mainnet-1.4.3EOS版本,果断升级喽。

看一下版本,没问题!

nodeos --version

另外,因为我是一路升级过来的,所以同样不需要REPLAY。

NOTICE: IF YOU ARE UPGRADING TO THIS RELEASE FROM VERSION 1.3.X OR EARLIER AND USE THE HISTORY_PLUGIN YOU WILL NEED TO REPLAY THE BLOCKCHAIN TO RECONSTRUCT THAT PLUGIN’S DATA

升级完看一下,一切正常

cleos get info

哎,好像也跑了好久了,除了编译、升级,还能拿来做点啥呢?纠结。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: 升级本地EOS节点至1.4.3

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×