摘要:先上大神文章里面提到了字符串用比用連接要好。原因先不說,先來看以下兩句逗號比更節(jié)省時間結果是什么我只能說的結果是,所以結果是和至于為啥快,可以簡單理解,用是先拼接在,雖然逗號個數(shù)代表的調用次數(shù)可以這么理解暫時。但是拼接的速度要小于的速度。
先上大神文章54chen
里面提到了echo 字符串用,比用.連接要好。原因先不說,先來看以下兩句
結果是什么?
1+5=6?
1+5=6?
——————
6?
2?
——————
6.6?
6.6?
——————
我只能說echo "5+1=" . 1+5;的結果是10,所以結果是6和2.php echo manual
至于為啥快,可以簡單理解,用.是先拼接在echo,雖然逗號個數(shù)代表echo的調用次數(shù)(可以這么理解暫時)。
但是拼接的速度要小于echo的速度。
如果深入理解,VLD如下圖。是@tywei大神的圖上面比下面多了個CONCAT,下面比上面多了個echo。
如果想知道更多詳細信息,點擊查看這個重磅炸彈=======更新分割線===================2016-05-27
今天在看java的時候,發(fā)現(xiàn)java的string對象很嚴謹,小例子如下public class HelloWorld { public static void main(String[] args) { String s1 = "imooc"; String s2 = "imooc"; String s3="I love "+s1; //定義字符串s3,保存“I love”和s1拼接后的內容 // 比較字符串s1和s2 // imooc為常量字符串,多次出現(xiàn)時會被編譯器優(yōu)化,只創(chuàng)建一個對象 System.out.println("s1和s2內存地址相同嗎?" + (s1 == s2)); //比較字符串s1和s3 System.out.println("s1和s3內存地址相同嗎?" + (s2==s3) ); String s4 = "I love " + s1; //比較字符串s4和s3 // s1是變量,s4在運行時才知道具體值,所以s3和s4是不同的對象 System.out.println("s3和s4內存地址相同嗎?" + (s4 == s3)); } }以上的結果為
s1和s2內存地址相同嗎?true
s1和s3內存地址相同嗎?false
s3和s4內存地址相同嗎?false
暫不討論內存地址這個概念(其實我不大懂),我就想起了php中是不是也是這樣。
類似例子就不貼了,php肯定是全等的。。但是我又想到了怎么看php中內存具體怎么調用,想到了c下的gdb。但是php還是解析不了。那先看看opcode,然后就有這篇補上的文章了。我們先安裝個vld擴展,先聲明我環(huán)境為14.04 LTS PHP 5.5.9-1ubuntu4.16 (cli)
pecl下載vldtar zxvf解壓
進入到解壓好目錄
phpize ./configure make && make install(注意操作要在root下,要不會報perssion錯誤)
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的選項。
vld support enabled為啥說是web中呢,因為我們一般調試在cli端
所以需要修改下cli的php.ini文件執(zhí)行php -m |grep vld
root@tb:/usr/share/nginx/html/vldtest# php -m |grep vld vld就說明cli下的vld也可以用了。
然后我們在具體目錄建兩個php文件,內容如下
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
下面簡單記錄下參數(shù)意義:
-dvld.active 是否再執(zhí)行時激活vld,默認為0.所以我們都使用-dvld.active=1啟用
-dvld.skip_prepend 是否跳過php.ini配置文件中auto_prepend_file指定的文件,默認為0,就是禁用。
就是不跳過
-dvld.execute 是否執(zhí)行php腳本,默認為1,所以上面都顯示了helloworld
-dvld.save_paths 指定是否輸出文件
再膜拜下大神關于vld的文章另外感興趣的同學關于擴展可以執(zhí)行下 php --re vld【redis,memcache】
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/21457.html
摘要:點號正則中,有一個特殊的特殊的元字符,點號,它可以匹配任意字符,除了換行符。表各種量詞的轉義量詞轉義形式除此之外,元字符點也需要加反斜線來進行轉義。 ??我們知道,在正則表達式中,可以使用[0-9]或d來匹配單個數(shù)字字符,但是,如果需要驗證一個更復雜的字符串呢,比如大陸地區(qū)的郵政編碼。??不過郵政編碼并沒有特別規(guī)定,只有由6個數(shù)字組成的字符串而已, 如246512,根據(jù)[0-9]或d,...
摘要:由于協(xié)議中沒有定義任何狀態(tài)碼,所以除非在某些試驗條件下,服務器禁止向此類客戶端發(fā)送響應。表示要完成請求,需要進一步操作。 最近在廣州找工作,大四狗,讀著三本前兩年剛升二本的學校,文科生,好像一切條件都非常不利,但我還是毅然選擇這條路——拍黃片,人不能固步自封,還是要拓展一下自己的知識面,不能只學php而不拓展視野,還是要學學python、java、前端這些面試得有點心塞,各種因為學歷被...
摘要:數(shù)組的大小是不固定的,可以像這樣隨意添加。再看一張圖,這次多添加幾個元素,再給數(shù)組添加一個屬性注意看右側對象的元素索引不知道你有沒有發(fā)現(xiàn)。數(shù)組范圍和索引轉換那里是參考的,其他地方都是自己的理解和看法。 從題目說起,之所以是不完全,是因為有些東西比如數(shù)組的方法怎么用這個我都不打算講,因為那個看一下都會,下面講的都是我覺得重要的,只關于數(shù)組對象本身。另外,由于我的Javascript實戰(zhàn)經...
摘要:直接強制結束程序。在用掛起程序時,當想要結束這個程序,最好用。能夠模擬在控制臺結束程序的功能。 向 host 文件快速添加新網(wǎng)址配置 echo 127.0.0.1 your.domian.com | sudo tee -a /etc/hosts NGINX 配置 #nginx禁止訪問.點號開頭的文件 location ~* /.* { deny all; } #nginx 禁止訪問.s...
閱讀 3527·2021-11-17 17:00
閱讀 3932·2021-08-09 13:46
閱讀 2936·2019-08-30 15:54
閱讀 709·2019-08-30 13:54
閱讀 3013·2019-08-29 17:13
閱讀 3318·2019-08-29 14:00
閱讀 3048·2019-08-29 11:11
閱讀 1478·2019-08-26 10:15