A. php性能更好的去重和是否存在
去重
很多時候操作數組去重,一般使用array_unique()函數,但是在大數組的情況下運行地慢一些
更好的方式:
//把數組的鍵值交換過來,因為數組的健不能重復,就實現了去重
$array = array('a', 'b', 'c', 'a', 'd');
$array = array_flip($array);
//修復數組鍵值序列
$array = array_keys($array)
//再把數組的鍵值交換回來
$array = array_flip($array);
判斷是否存在
一般情況下判斷一個值是否已在在數組中in_array(), in_array()性能不太好
更好的方式
$array = array('a', 'b', 'c', 'd');
if (isset(array_flip($array)['a'])){
};
B. PHP的優缺點是什麼
HP應該算是現在大中小非專業網站企業會優先使用的網站建設編程語言,相對於ASP和JSP來說,PHP在在很多方面更適合個人以及小型企業做開發,這主要是因為PHP本身獨特的優勢導致的,那麼下面小編就來為大家盤點PHP得到眾多企業支持的原因。
PHP的優勢包括:
1、開放源代碼
由於PHP開放源代碼,因此基本上可以在網路上找到適合自己的源代碼。
2、免費性
和其它技術相比,PHP本身免費,並且也是開源代碼。
3、快捷性
PHP程序開發快,運行快,技術本身學習快。由於PHP可以被嵌入於HTML語言,新詞相對於其他語言來說編輯簡單,實用性強,更適合初學者。
4、跨平台性強
由於PHP是運行在伺服器端的腳本,因此可以在多種平台上得到應用,包括了UNIX、linux、WINDOWS、Mac OS等系統。
5、效率高
PHP由於消耗相當少的系統資源,因此工作效率更高。
6、圖像處理
一般來說,PHP動態創建圖像,而且目前PHP圖像處理默認使用GD2。因此也可以配置為使用image magick進行圖像處理。
7、面向對象
在PHP4,PHP5 中,面向對象方面都做出了很大的改進,因此PHP完全可以用來開發大型商業程序。
8、專業專注
PHP同為類C語言,而且更重要的就是PHP以支持腳本語言為主。
上面介紹的八點內容就是關於PHP被廣大企業使用的優勢,其實PHP相對於其它幾種語言來說,更適合初學者學習和使用,因此想要入門的朋友可以多找一些材料來學習。
C. 請問為什麼PHP的性能比java的servlet性能好
很多Java EE應用伺服器的組件比較龐大,優化也不夠。
很多JSP/servlet的開發者對java和演算法不通,濫用字元串處理數據。寫出來的代碼效率極低。
導致同樣的實現不可能比PHP慢的Java寫出來的東西反而比PHP慢。
總之,比PHP慢是因為人不行。
D. php7.4性能如何
參考一下這篇文章
https://www.oschina.net/news/106908/php-7-4-early-benchmarks?p=2
E. php性能優化的幾個方法
面對一個性能問題是,第一步永遠是找到問題產生的原因,而不是去看技巧列表。搞明白產生瓶頸的原因,找到目標並且實施修復,然後再重新測試。查找瓶頸只是萬里長征的第一步,這里有些常用技巧,希望對最重要的第一步找到瓶頸能有所幫助。
使用監控方法(比如監控寶),進行benchmark和監控,網路,特別是網路狀況瞬息萬變,做得好的話5分鍾就可以找到瓶頸。
剖析代碼。必須了解那部分代碼耗時最多,在這些地方多多關注。
想找到瓶頸,請檢查每個資源請求(比如,網路、CPU、內存、共享內存、文件系統、進程管理、網路連接等等……)
先對迭代結構和復雜的代碼進行benchmark
在在真實負載下用真實數據進行真實測試,當然,如果可以最好用產品伺服器。
緩存
(Caching)
有些人認為緩存是解決性能問題最有效的辦法之一,試試這些:
使用OPCODE(操作碼)緩存,這樣腳本就不會在每次訪問時重新編譯一次。比如:啟用Windows平台上的windows緩存擴展。可以緩存opcode,文件,相對路徑,session數據和用戶數據。
考慮在多伺服器環境下使用分布式緩存
在調用imap_header()之前先調用imap_headers()
編譯
vs. 解釋(Compiling vs. Interpreting)
將PHP源碼編譯成機器碼。動態解釋執行同樣的編譯,但它是按行執行的。編譯為opcode是折中選擇,它可以將PHP源碼翻譯為opcode,之後opcode再轉為機器碼。以下為關於編譯與解釋的相關技巧:
上線之前將PHP代碼編譯為機器碼。opcode緩存盡管並不是最好的選擇,但依舊比解釋型來得強。或者,考慮將PHP代碼編譯成一個C擴展。
PHP的opcode編譯器(bcompiler)還不能在產品環境中使用
F. Windows伺服器上運行php比Linux運行php,性能上相差有多大
linux下性能和穩定性較好,apache+php+mysql是最佳組合,再加上phpmyadmin管理資料庫,要比sql簡介不少。從漏洞和磁碟運行的狀態,linux要比windows下優異的多。在linux下無論從安裝到配置到定製,很容易上手。php要比aps安全的多
G. php框架相對原生php影響性能或效率嗎
影響不大。因為http的請求,會受到網路速度的限制。與此相比,程序內部實現造成的影響,可能是很微小的。目前流行的php框架有yii、ci等。用它們編寫一個簡單的程序,和不使用框架,運行速度幾乎沒有差別。但使用框架時也需注意一些問題。
一個網頁響應速度,和其網站架構、HTML的結構和比較耗時的操作關系較大。
其中網站架構涉及硬體設備和應用程序分布式布署的問題,對性能影響最為顯著。一些程序難以解決的性能瓶頸,要用架構設計去解決。比如資料庫讀寫分離。
優化HTML結構也是優化網站的課題之一。更為簡約的編碼,可以節約帶寬,也能加快瀏覽器渲染的速度。頁面位元組大小,是前端設計的重要指標。非同步載入和代碼壓縮,是減少網頁下載時間的重要手段。
程序比較耗時的操作,如資料庫查詢、圖片處理、壓縮文件等。其中資料庫的因素較為普遍。這里要提到一個框架的問題。yii框架自帶的資料庫模型非常強大,有了它我們基本上不用寫SQL語句。但是,它自己生成的SQL語句不一定是最佳的。為了保證網站性能,關鍵的查詢需要自己把握。而且比較復雜的抽象,也會降低性能。它的官方文檔中,也不建議在大型網站中使用模型。
綜上,框架的特性要選擇性地使用。使用前要仔細閱讀文檔。優化網站要考慮多種因素,而不是僅僅關心程序的實現。要杜絕對程序效率影響不大的"微優化"。
H. python與php哪個性能高
語法:PHP 的語法看起來就像沒有經過精心設計一樣,很隨意。有的語法看似很方便(用點來連接字元串), 但是卻為之後擴展造成了很多麻煩(點沒法用於訪問對象的成員), 再比如比較蛋疼的命名空間的語法。Python 相比之下要好一點,但是 Python2 和 Python3 直接存在著一些不兼容的語法變動。
編寫 HTML 模版:PHP 可以非常方便地直接用來編寫 HTML 模版,Python 需要藉助其他的語言或庫來實現。
包管理器:PHP 的包管理器(PEAR)和擴展管理器(PECL)恐怕根本沒人用,這導致引入一個新依賴的成本很高,於是很多人傾向於自己造輪子而不是引入現成的庫。Python 有統一的包管理器,雖然也有問題,但要比 PHP 好得多,引入庫之後的命名空間管理也要比 PHP 好。
擴展和庫:PHP 和 Python 都可以用 C 來編寫擴展。相比之下 Python 可用的庫要更多一點。
運行方式:PHP 運行方式比較單一(php-fpm, mod_php), Python 則可以以 fastCGI 運行,也可以自行監聽埠來處理請求。
性能:因為 PHP 運行方式單一,opcode 緩存方案也比較成熟(APC, opcache),緩存 opcode 之後運行速度很快。Python 則可能需要更多地自行優化性能。
類型系統:PHP 和 Python 都是動態類型。PHP 對類型判別比較模糊,有很多陷阱,Python 則嚴格一些。
學習成本:PHP 和學習成本都不是很高。PHP 優勢在於有比較完整的官方中文文檔,而且 PHP 應用領域只有 Web, 所以需要學習的內容較少。Python 因為學習路線較多,不太容易找到適合自己的教程和資料。
社區:PHP 的資料遍地,但是高質量的中文社區較少,普遍對官方的新功能不是很關注。Python 則要好一點。
應用領域:PHP 僅在 Web 後端方面被使用,Python 應用領域更廣泛一點,如果需要將邏輯移植到其他平台(如桌面), Python 要方便一點。
I. PHP7的性能,正式版會不會秒了其他腳本語言
> PHP7( phpng)的性能,正式版會不會秒了其他腳本語言?
和其他腳本語言比沒有大多意義,因為應用場景不同。你不會用PHP像Python那樣寫系統管理腳本,也不會用PHP跑Rails。
更有意義的,是和其他PHP版本的縱向比較。具體結果可Google: http://lmgtfy.com/?q=phpng+benchmark
> 一直想學runy、python,node.js但是正式用到機會不多。
一定要正式用才能逼自己學嗎?
Ruby都拼不對。
> 所以一直就看看語法就放棄了。一直沒深入。
就算是學習語法,光看是沒用的,更重要的是做。
至於深入,學習語言的第一步是寫出沒有語法錯誤、可以完成任務的程序。一步登天想第一天就100% best practice是不可能的,瘦子吃不成胖子。至於更加深入的,比如語言的內部實現,我覺得90%的情況下即使你不去了解,問題也不大。也有小概率的情況的確碰到坑了,那麼認真去挖一下坑,收獲也會很大。
> 沒深入學,其實跟沒學一樣,幾個月看看語法,扔了,過幾個月又想學,又看看語法,又扔了。
沒什入學不代表跟沒學一樣,能用、增加了知識就能體現學習的價值。比如我學Haskell,書就看了幾章,很多很高深的概念都不懂,但這不影響我欣賞Haskell,也開闊了我在FP方面的知識面。
你就是懶,沒恆心。
> 聽說PHP7性能太牛B後,更讓我懶得深入了。。
不是很理解這個邏輯。
> 但是好像不會點小眾語言,就好像不上檔次一樣。
1. PHP不是小眾語言。
2. 「上檔次」如何定義?能吃嗎?
> 一直想深入學,一直被打消念頭。怎麼樣才能破這個局呢?
1. (optional) 讀點心靈雞湯,打點雞血
2. 靜下心來學,寫點程序練
J. 如何優化PHP性能
如果一個方法能被靜態,那就聲明它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。
當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。
其實靜態方法和非靜態方法的效率主要區別在內存:靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,所以靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法,靜態速度很快,但是多了會占內存。
任何語言都是對內存和磁碟的操作,至於是否面向對象,只是軟體層的問題,底層都是一樣的,只是實現方法不同。靜態內存是連續的,因為是在程序開始時就生成了,而實例申請的是離散的空間,所以當然沒有靜態方法快。
靜態方法始終調用同一塊內存,其缺點就是不能自動進行銷毀,而是實例化可以銷毀。