当前位置:网站首页>[Huang ah code] Why do I suggest you choose go instead of PHP?
[Huang ah code] Why do I suggest you choose go instead of PHP?
2022-07-07 17:08:00 【Yellow Size】
【 Say something old :php Is the best language in the world 】
Many developers think that php It's already “ spent force ”, It's time to turn go 了 , But before that , Let's have a good understanding of the difference between the two , If you don't even know the difference ? What else can we talk about
The simple difference
Go Also known as Golang, It is basically a programming language , It can be used for fast machine code compilation . It consists of Google establish . It is a statically typed compilation language . It provides a concurrency mechanism , It is easy to develop multi-core and networked machine level programs . It's fast , Dynamic typing and interpretation language .
PHP It's a server-side script , For Web General programming language for development and design ; It is a fast and flexible language of dynamic type . It can work with all kinds of Web Template system and Web The development framework is used in combination . adopt PHP The code processed is usually composed of PHP Interpreter implementation .
1、Go It is basically a programming language that can be used for fast machine code compilation , and PHP It's basically a server-side script , It's also used for Web Development of a general programming language .
2、Go Is a statically typed language .PHP It is a dynamically typed language .
3、PHP Use the core PHP Language templating , So the browser sends HTML Code processing PHP Code and send the output to the browser , And in the GO Under the circumstances , It usually uses a simple template system .
4、Go Its main application is machine level learning and its corresponding data science and artifact analysis .PHP Mainly used in Web The development process .
5、Go And other versions have a lot of community support , And get Google Support for , Its community support ratio PHP A little bit more .
Detailed differences
Grammatical differences :
One 、 Variable definition and assignment
Here you can clearly highlight the syntax differences between the scripting language and the compilation language
PHP: Weakly typed variables , The same variable can be assigned any data type at will
GO: Strongly typed variables , Variables need to be predefined , Different data types cannot be assigned randomly
Two 、 Function definition and return
Go Multi value return is more convenient ,PHP In some cases of single value return, it is necessary to judge the element isset($data['nickname'])
PHP: Function allows only a single value to be returned
GO: Function can return multiple values , And the data type needs to be defined for the parameter returned
3、 ... and 、 array ( Array )
PHP It is more convenient and powerful to deal with arrays ,GO When defining a multidimensional array, consider the type , It's a little cumbersome
PHP: Define an array variable , There is no need to consider the multi-level embedded assignment of arbitrary element types
GO: Need to distinguish the score group ( Fixed length )、 section 、 mapping 、 Interface
Four 、 Throw exception mechanism
GO It is not recommended to use try catch Catch exceptions in this way , You should check for errors before compiling , Many people have roast about this .
PHP:try and catch It can friendly catch the abnormal error handling of the non-standard code
GO: Different from other languages ,panic If not recover() It will make the whole main program exit unavailable
5、 ... and 、 Determine whether an element exists
PHP It is relatively concise , Built in function judgment ,GO Judgment seems a little less human
PHP: Simple use in_array And isset that will do
GO: The slice type must be determined by traversal ,Map The mapping needs to return the value for judgment
6、 ... and 、 Inherit
GO The design idea is not object-oriented programming , So there is not much inheritance and polymorphism , Writing ideas need to change .
PHP:extends Keywords inherit the methods and properties of the parent class
GO:struct Structure defines member attribute variables , So that inheritance
Performance difference
We use a server configuration here apache Test it
Server configuration : 16 nucleus E5620 @ 2.40GHz 11G Memory
Business includes :DB(oracle) and redis Inquire about , When there is a cache ,DB No more inquiries , Direct reading redis, Batch query two primary keys
Use apache Of ab test Concurrent 200,20000 A request
golang Concurrent test
golang Of qps Around the 9675/s, The highest 10200/s about ,cpu The peak utilization rate is 10.6% Up and down golang Multi core enabled , And maintained 40 individual redis Connection pool
above php The link to is golang Of url rewrite , For compatibility php Project
PHP Concurrent test
php Of QPS It's about 1726/s, The highest 2100/s about , cpu Peak in 50.1% It's scary
In addition, we also tested more batch queries of primary keys , golang The processing capacity of is reduced to 4700/s, php To 1078/s, take ab Concurrent add to 400 when , php Requests begin to fail ,
golang The concurrency of is added to 2500 after , Surprised that his performance is still excellent , Those who have doubts can test by themselves
The conclusion drawn from the above test results : Due to multi-core utilization ,golang Of ” Multithreading ”, also redis Connection pool , bring go In the and php The concurrent comparison is far ahead , The processing capacity is about php Of 4 times
In fact, many developers say it can be used swoole Frame blessing php, but swoole Or at the bottom C, The cost of learning is still quite high , My personal suggestion is to study as soon as possible go perhaps java Well , After all : If a programmer can't speak three or two languages , There is no guarantee for your future 【 remember , I'm talking about programmers , It's not an engineer !】
边栏推荐
- Seaborn data visualization
- Sator launched Web3 game "satorspace" and launched hoobi
- 【Seaborn】组合图表:PairPlot和JointPlot
- 谈谈 SAP 系统的权限管控和事务记录功能的实现
- How to add aplayer music player in blog
- 《产品经理必读:五种经典的创新思维模型》的读后感
- Lie cow count (spring daily question 53)
- 最新高频Android面试题目分享,带你一起探究Android事件分发机制
- User defined view essential knowledge, Android R & D post must ask 30+ advanced interview questions
- 字节跳动Android金三银四解析,android面试题app
猜你喜欢
Sort out several important Android knowledge and advanced Android development interview questions
User defined view essential knowledge, Android R & D post must ask 30+ advanced interview questions
skimage学习(1)
Pisa-Proxy SQL 解析之 Lex & Yacc
面向接口编程
SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
NeRF:DeepFake的最终替代者?
最新2022年Android大厂面试经验,安卓View+Handler+Binder
[Seaborn] combination chart: facetgrid, jointgrid, pairgrid
Shallow understanding Net core routing
随机推荐
谈谈 SAP 系统的权限管控和事务记录功能的实现
Localstorage and sessionstorage
Pisa-Proxy SQL 解析之 Lex & Yacc
【饭谈】那些看似为公司着想,实际却很自私的故事 (一:造轮子)
SlashData开发者工具榜首等你而定!!!
如何在软件研发阶段落地安全实践
Blue Bridge Cup final XOR conversion 100 points
【黄啊码】为什么我建议您选择go,而不选择php?
Reflections on "product managers must read: five classic innovative thinking models"
LeetCode 403. Frog crossing the river daily
字节跳动Android金三银四解析,android面试题app
LeetCode 1626. The best team without contradiction
Pychart ide Download
LeetCode 1696. 跳跃游戏 VI 每日一题
应用在温度检测仪中的温度传感芯片
LeetCode 1043. 分隔数组以得到最大和 每日一题
Master this set of refined Android advanced interview questions analysis, oppoandroid interview questions
ATM系统
Number of exchanges in the 9th Blue Bridge Cup finals
LeetCode 1043. Separate the array to get the maximum and daily questions