自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP 不如 C++ 嗎?

開(kāi)發(fā) 后端
昨天和一個(gè)前同事聊天,各種吐槽PHP,吐槽Swoole,他認(rèn)為PHP到處是坑,PHP局限很大。PHP+Swoole不適合做高并發(fā)服務(wù)器,C+Swoole才是最好的方案。C++有各種數(shù)據(jù)結(jié)構(gòu),C++可以開(kāi)線程,C++可以共享對(duì)象。看來(lái)有必要好好得說(shuō)明一下了。

昨天和一個(gè)前同事聊天,各種吐槽PHP,吐槽Swoole,他認(rèn)為PHP到處是坑,PHP局限很大。PHP+Swoole不適合做高并發(fā)服務(wù)器,C+Swoole才是***的方案。C++有各種數(shù)據(jù)結(jié)構(gòu),C++可以開(kāi)線程,C++可以共享對(duì)象??磥?lái)有必要好好得說(shuō)明一下了。

 

[[148132]]

PHP比C/C++或Java少了什么?多線程,多線程,多線程……

是的。PHP比C/C++、Java少了多了多線程。PHP只有多進(jìn)程的方案,所以PHP里的全局變量和對(duì)象不是共享的、數(shù)據(jù)結(jié)構(gòu)也不能跨進(jìn)程操作、Socket文件描述符不能共享等等。所以PHP有局限?

多線程看似比多進(jìn)程要強(qiáng)大很多,實(shí)際上我可以負(fù)責(zé)任的告訴你,多線程帶來(lái)的坑更多。

  • 數(shù)據(jù)同步問(wèn)題會(huì)讓你崩潰的。要么就犧牲性能到處加鎖,要么就用地獄難度的無(wú)鎖并發(fā)編程,據(jù)我所知目前國(guó)內(nèi)能掌握此項(xiàng)技能的人鳳毛麟角。

  • 不要以為加鎖就萬(wàn)事大吉了,你會(huì)在死鎖問(wèn)題上栽個(gè)大跟頭。當(dāng)你的程序邏輯復(fù)雜后,鎖越來(lái)越難控制了,一旦死鎖你的程序基本上就完了。

  • 某個(gè)線程掛了那所有線程都會(huì)退出

反而在看多進(jìn)程,其實(shí)就簡(jiǎn)單的多了。

  • 配合進(jìn)程間通信,基本上你可以實(shí)現(xiàn)任意的數(shù)據(jù)共享。比如利用一個(gè)進(jìn)程專(zhuān)門(mén)存數(shù)據(jù)結(jié)構(gòu)和對(duì)象,其他進(jìn)程的數(shù)據(jù)操作全部投遞到此進(jìn)程來(lái)

  • 多進(jìn)程不需要鎖

  • 多進(jìn)程可以使用共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)一些多線程的功能。如Swoole提供的Table、Atomic可以實(shí)現(xiàn)數(shù)據(jù)共享,但成本很低。未來(lái)還會(huì)加入共享內(nèi)存隊(duì)列

所謂PHP限制了Swoole,這完全是無(wú)稽之談。合理利用Swoole提供的Table、Atomic、SendMessage/PipeMessage、Task完全可以實(shí)現(xiàn)異步非阻塞的代碼邏輯。

C++寫(xiě)出來(lái)的程序性能更好?

這完全是盲目的迷信,密集計(jì)算的程序C++確實(shí)是有優(yōu)勢(shì)的。而并發(fā)服務(wù)器核心是IO,并非大規(guī)模密集運(yùn)算。C++從語(yǔ)言層面來(lái)看并沒(méi)有什么優(yōu)勢(shì)。另外C++中的大部分?jǐn)?shù)據(jù)結(jié)構(gòu)在PHP中都有對(duì)應(yīng)的實(shí)現(xiàn),實(shí)在不行自己寫(xiě)個(gè)專(zhuān)門(mén)的擴(kuò)展也能解決之。

高并發(fā)的服務(wù)器單機(jī)能維持10W連接、每秒可處理3-5W筆消息收發(fā)。這種性能水準(zhǔn)已經(jīng)可以應(yīng)用在BAT的核心系統(tǒng)上了。

開(kāi)發(fā)效率快的意義是什么?

這位同事還說(shuō)PHP開(kāi)發(fā)Server雖然比C++快了,但是追求性能的***還是要用C++。我要告訴你效率高了究竟意義何在。開(kāi)發(fā)一套好程序不是一 件容易的事情,需要程序員投入大量時(shí)間和精力。開(kāi)發(fā)效率提升的意義并不是簡(jiǎn)單的我可以更少時(shí)間完工,而是剩下的時(shí)間你可以增加單元測(cè)試、修復(fù)BUG、提升 用戶體驗(yàn)、完善細(xì)節(jié)、提供配套工具、優(yōu)化性能、增加關(guān)鍵日志、增加監(jiān)控報(bào)警、增加容災(zāi)方案。

(本文作者是 Swoole 的創(chuàng)始人, 原文標(biāo)題:“關(guān)于C++、PHP和Swoole”)

原文:http://rango.swoole.com/archives/473 作者: @韓天峰-Rango

責(zé)任編輯:王雪燕 來(lái)源: @韓天峰-Rango的博客
相關(guān)推薦

2022-08-22 15:32:59

C++C代碼

2010-01-21 10:23:53

C++代碼

2024-06-24 12:41:40

2010-01-25 16:41:08

C++應(yīng)用程序

2018-08-10 09:00:50

PythonJavaPHP

2018-05-30 15:01:45

語(yǔ)言框架Java

2020-12-30 10:38:54

漏洞編程語(yǔ)言加密

2010-01-26 09:24:53

C++語(yǔ)言

2010-01-15 16:45:35

C++語(yǔ)言

2010-01-14 10:34:02

C++語(yǔ)言

2010-09-16 09:12:20

JavaC#

2010-01-20 17:23:03

C++編程語(yǔ)言

2023-09-19 23:26:15

++i原子操作C++

2010-01-20 10:14:53

C++程序

2011-07-14 17:45:06

CC++

2010-01-21 14:07:14

CC++聲明

2010-01-21 09:34:57

C++語(yǔ)法

2010-01-27 16:05:06

C++堆棧

2022-02-17 08:48:12

C++開(kāi)發(fā)單片機(jī)

2010-01-21 17:14:40

C++兼容
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)