当前位置:网站首页>[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 !】
边栏推荐
- 在哪个期货公司开期货户最安全?
- 如何在博客中添加Aplayer音乐播放器
- skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
- LeetCode 403. Frog crossing the river daily
- How to add aplayer music player in blog
- LeetCode 120. Triangle minimum path and daily question
- os、sys、random标准库主要功能
- typescript ts基础知识之tsconfig.json配置选项
- typescript ts 基础知识之类型声明
- 最新高频Android面试题目分享,带你一起探究Android事件分发机制
猜你喜欢

QML beginner

预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖

The process of creating custom controls in QT to encapsulating them into toolbars (II): encapsulating custom controls into toolbars

QT 图片背景色像素处理法

掌握这个提升路径,面试资料分享

Test case management tool recommendation

SlashData开发者工具榜首等你而定!!!

QT中自定义控件的创建到封装到工具栏过程(一):自定义控件的创建

QT picture background color pixel processing method

Master this set of refined Android advanced interview questions analysis, oppoandroid interview questions
随机推荐
防火墙系统崩溃、文件丢失的修复方法,材料成本0元
最新阿里P7技术体系,妈妈再也不用担心我找工作了
[designmode] flyweight pattern
skimage学习(3)——使灰度滤镜适应 RGB 图像、免疫组化染色分离颜色、过滤区域最大值
Skimage learning (3) -- gamma and log contrast adjustment, histogram equalization, coloring gray images
Flask搭建api服务
QT视频传输
QT 图片背景色像素处理法
Ray and OBB intersection detection
LocalStorage和SessionStorage
【Seaborn】组合图表:PairPlot和JointPlot
Temperature sensor chip used in temperature detector
如何在博客中添加Aplayer音乐播放器
【Seaborn】组合图表、多子图的实现
QT中自定义控件的创建到封装到工具栏过程(二):自定义控件封装到工具栏
User defined view essential knowledge, Android R & D post must ask 30+ advanced interview questions
第九届 蓝桥杯 决赛 交换次数
字节跳动Android金三银四解析,android面试题app
dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码
LeetCode 1654. The minimum number of jumps to get home one question per day