摘要:先上大神文章里面提到了字符串用比用連接要好。原因先不說(shuō),先來(lái)看以下兩句逗號(hào)比更節(jié)省時(shí)間結(jié)果是什么我只能說(shuō)的結(jié)果是,所以結(jié)果是和至于為啥快,可以簡(jiǎn)單理解,用是先拼接在,雖然逗號(hào)個(gè)數(shù)代表的調(diào)用次數(shù)可以這么理解暫時(shí)。但是拼接的速度要小于的速度。
先上大神文章54chen
里面提到了echo 字符串用,比用.連接要好。原因先不說(shuō),先來(lái)看以下兩句
結(jié)果是什么?
1+5=6?
1+5=6?
——————
6?
2?
——————
6.6?
6.6?
——————
我只能說(shuō)echo "5+1=" . 1+5;的結(jié)果是10,所以結(jié)果是6和2.php echo manual
至于為啥快,可以簡(jiǎn)單理解,用.是先拼接在echo,雖然逗號(hào)個(gè)數(shù)代表echo的調(diào)用次數(shù)(可以這么理解暫時(shí))。
但是拼接的速度要小于echo的速度。
如果深入理解,VLD如下圖。是@tywei大神的圖上面比下面多了個(gè)CONCAT,下面比上面多了個(gè)echo。
如果想知道更多詳細(xì)信息,點(diǎn)擊查看這個(gè)重磅炸彈=======更新分割線===================2016-05-27
今天在看java的時(shí)候,發(fā)現(xiàn)java的string對(duì)象很嚴(yán)謹(jǐn),小例子如下public class HelloWorld { public static void main(String[] args) { String s1 = "imooc"; String s2 = "imooc"; String s3="I love "+s1; //定義字符串s3,保存“I love”和s1拼接后的內(nèi)容 // 比較字符串s1和s2 // imooc為常量字符串,多次出現(xiàn)時(shí)會(huì)被編譯器優(yōu)化,只創(chuàng)建一個(gè)對(duì)象 System.out.println("s1和s2內(nèi)存地址相同嗎?" + (s1 == s2)); //比較字符串s1和s3 System.out.println("s1和s3內(nèi)存地址相同嗎?" + (s2==s3) ); String s4 = "I love " + s1; //比較字符串s4和s3 // s1是變量,s4在運(yùn)行時(shí)才知道具體值,所以s3和s4是不同的對(duì)象 System.out.println("s3和s4內(nèi)存地址相同嗎?" + (s4 == s3)); } }以上的結(jié)果為
s1和s2內(nèi)存地址相同嗎?true
s1和s3內(nèi)存地址相同嗎?false
s3和s4內(nèi)存地址相同嗎?false
暫不討論內(nèi)存地址這個(gè)概念(其實(shí)我不大懂),我就想起了php中是不是也是這樣。
類似例子就不貼了,php肯定是全等的。。但是我又想到了怎么看php中內(nèi)存具體怎么調(diào)用,想到了c下的gdb。但是php還是解析不了。那先看看opcode,然后就有這篇補(bǔ)上的文章了。我們先安裝個(gè)vld擴(kuò)展,先聲明我環(huán)境為14.04 LTS PHP 5.5.9-1ubuntu4.16 (cli)
pecl下載vldtar zxvf解壓
進(jìn)入到解壓好目錄
phpize ./configure make && make install(注意操作要在root下,要不會(huì)報(bào)perssion錯(cuò)誤)
root@tb:/home/tb/Downloads/vld-0.13.0# ls /usr/lib/php5/20121212/ json.so memcached.so mysql.so pdo_mysql.so readline.so vld.so mcrypt.so mysqli.so opcache.so pdo.so redis.so xhprof.so這樣就裝好了。
====修改fpm下的配置文件
vim /etc/php5/fpm/php.ini增加一行vld的,如下所示
[redis] extension =redis.so [xhprof] extension=xhprof.so [vld] extension=vld.so xhprof.output_dir=/var/log/xhprof [memcache] extension =memcached.so重啟fpm
service php5-fpm stop service php5-fpm start可以看到web中的phpinfo有了vld的選項(xiàng)。
vld support enabled為啥說(shuō)是web中呢,因?yàn)槲覀円话阏{(diào)試在cli端
所以需要修改下cli的php.ini文件執(zhí)行php -m |grep vld
root@tb:/usr/share/nginx/html/vldtest# php -m |grep vld vld就說(shuō)明cli下的vld也可以用了。
然后我們?cè)诰唧w目錄建兩個(gè)php文件,內(nèi)容如下
root@tb:/usr/share/nginx/html/vldtest# cat 1.php root@tb:/usr/share/nginx/html/vldtest# cat 2.php root@tb:/usr/share/nginx/html/vldtest#然后分別執(zhí)行
php -dvld.active=1 1.php root@tb:/usr/share/nginx/html/vldtest# php -dvld.active=1 1.php Finding entry points Branch analysis from position: 0 Jump found. Position 1 = -2 filename: /usr/share/nginx/html/vldtest/1.php function name: (null) number of ops: 4 compiled vars: none line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 2 0 E > CONCAT ~0 "hello", "+" 1 CONCAT ~1 ~0, "world" 2 ECHO ~1 3 3 > RETURN 1 branch: # 0; line: 2- 3; sop: 0; eop: 3; out1: -2 path #1: 0, hello world
php -dvld.active=1 2.php root@tb:/usr/share/nginx/html/vldtest# php -dvld.active=1 2.php Finding entry points Branch analysis from position: 0 Jump found. Position 1 = -2 filename: /usr/share/nginx/html/vldtest/2.php function name: (null) number of ops: 4 compiled vars: none line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 2 0 E > ECHO "hello" 1 ECHO "+" 2 ECHO "world" 3 3 > RETURN 1 branch: # 0; line: 2- 3; sop: 0; eop: 3; out1: -2 path #1: 0, hello world
下面簡(jiǎn)單記錄下參數(shù)意義:
-dvld.active 是否再執(zhí)行時(shí)激活vld,默認(rèn)為0.所以我們都使用-dvld.active=1啟用
-dvld.skip_prepend 是否跳過(guò)php.ini配置文件中auto_prepend_file指定的文件,默認(rèn)為0,就是禁用。
就是不跳過(guò)
-dvld.execute 是否執(zhí)行php腳本,默認(rèn)為1,所以上面都顯示了helloworld
-dvld.save_paths 指定是否輸出文件
再膜拜下大神關(guān)于vld的文章另外感興趣的同學(xué)關(guān)于擴(kuò)展可以執(zhí)行下 php --re vld【redis,memcache】
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21457.html
摘要:點(diǎn)號(hào)正則中,有一個(gè)特殊的特殊的元字符,點(diǎn)號(hào),它可以匹配任意字符,除了換行符。表各種量詞的轉(zhuǎn)義量詞轉(zhuǎn)義形式除此之外,元字符點(diǎn)也需要加反斜線來(lái)進(jìn)行轉(zhuǎn)義。 ??我們知道,在正則表達(dá)式中,可以使用[0-9]或d來(lái)匹配單個(gè)數(shù)字字符,但是,如果需要驗(yàn)證一個(gè)更復(fù)雜的字符串呢,比如大陸地區(qū)的郵政編碼。??不過(guò)郵政編碼并沒(méi)有特別規(guī)定,只有由6個(gè)數(shù)字組成的字符串而已, 如246512,根據(jù)[0-9]或d,...
摘要:由于協(xié)議中沒(méi)有定義任何狀態(tài)碼,所以除非在某些試驗(yàn)條件下,服務(wù)器禁止向此類客戶端發(fā)送響應(yīng)。表示要完成請(qǐng)求,需要進(jìn)一步操作。 最近在廣州找工作,大四狗,讀著三本前兩年剛升二本的學(xué)校,文科生,好像一切條件都非常不利,但我還是毅然選擇這條路——拍黃片,人不能固步自封,還是要拓展一下自己的知識(shí)面,不能只學(xué)php而不拓展視野,還是要學(xué)學(xué)python、java、前端這些面試得有點(diǎn)心塞,各種因?yàn)閷W(xué)歷被...
摘要:換一臺(tái)電腦就要重新安裝。并且還需要適配不同的系統(tǒng)。提交大小幾乎沒(méi)有限制。即協(xié)議主要由請(qǐng)求和響應(yīng)組成。相反則為同步按照程序的順序,依次往下執(zhí)行,必須等上一程序執(zhí)行完成之后才能執(zhí)行下一程序,阻礙程序的執(zhí)行。 Ajax 服務(wù)器 類型 按照服務(wù)類型:文件服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器,郵件服務(wù)器,Web服務(wù)器 按照操作系統(tǒng):Linux服務(wù)器,Windows服務(wù)器 按照應(yīng)用軟件:Apache服務(wù)器,Ng...
摘要:數(shù)組的大小是不固定的,可以像這樣隨意添加。再看一張圖,這次多添加幾個(gè)元素,再給數(shù)組添加一個(gè)屬性注意看右側(cè)對(duì)象的元素索引不知道你有沒(méi)有發(fā)現(xiàn)。數(shù)組范圍和索引轉(zhuǎn)換那里是參考的,其他地方都是自己的理解和看法。 從題目說(shuō)起,之所以是不完全,是因?yàn)橛行〇|西比如數(shù)組的方法怎么用這個(gè)我都不打算講,因?yàn)槟莻€(gè)看一下都會(huì),下面講的都是我覺(jué)得重要的,只關(guān)于數(shù)組對(duì)象本身。另外,由于我的Javascript實(shí)戰(zhàn)經(jīng)...
摘要:直接強(qiáng)制結(jié)束程序。在用掛起程序時(shí),當(dāng)想要結(jié)束這個(gè)程序,最好用。能夠模擬在控制臺(tái)結(jié)束程序的功能。 向 host 文件快速添加新網(wǎng)址配置 echo 127.0.0.1 your.domian.com | sudo tee -a /etc/hosts NGINX 配置 #nginx禁止訪問(wèn).點(diǎn)號(hào)開頭的文件 location ~* /.* { deny all; } #nginx 禁止訪問(wèn).s...
閱讀 3604·2021-11-17 17:00
閱讀 4196·2021-08-09 13:46
閱讀 3030·2019-08-30 15:54
閱讀 787·2019-08-30 13:54
閱讀 3095·2019-08-29 17:13
閱讀 3391·2019-08-29 14:00
閱讀 3127·2019-08-29 11:11
閱讀 1562·2019-08-26 10:15