当前位置:网站首页>[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 !】
边栏推荐
- 谈谈 SAP 系统的权限管控和事务记录功能的实现
- skimage学习(1)
- 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
- 最新Android面试合集,android视频提取音频
- 【图像传感器】相关双采样CDS
- 最新高频Android面试题目分享,带你一起探究Android事件分发机制
- LeetCode 1696. Jumping game VI daily question
- Flask搭建api服务-SQL配置文件
- 【黄啊码】为什么我建议您选择go,而不选择php?
猜你喜欢
随机推荐
浅浅理解.net core的路由
如何在博客中添加Aplayer音乐播放器
测试用例管理工具推荐
LeetCode 213. Home raiding II daily question
LeetCode 1043. Separate the array to get the maximum and daily questions
Sort out several important Android knowledge and advanced Android development interview questions
Flask搭建api服务
Pychart ide Download
skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
QT picture background color pixel processing method
node:504报错
谈谈 SAP 系统的权限管控和事务记录功能的实现
ATM system
time标准库
LeetCode 1626. The best team without contradiction
Pisa-Proxy SQL 解析之 Lex & Yacc
centos7安装mysql笔记
字节跳动高工面试,轻松入门flutter
LeetCode 1696. 跳跃游戏 VI 每日一题
从DevOps到MLOps:IT工具怎样向AI工具进化?