当前位置:网站首页>[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 !】
边栏推荐
- [image sensor] correlated double sampling CDs
- [designmode] facade patterns
- LeetCode 300. 最长递增子序列 每日一题
- skimage学习(1)
- Interface oriented programming
- QT中自定义控件的创建到封装到工具栏过程(一):自定义控件的创建
- 【视频/音频数据处理】上海道宁为您带来Elecard下载、试用、教程
- 整理几个重要的Android知识,高级Android开发面试题
- 编程模式-表驱动编程
- Temperature sensor chip used in temperature detector
猜你喜欢
掌握这个提升路径,面试资料分享
Master this promotion path and share interview materials
A tour of gRPC:03 - proto序列化/反序列化
[image sensor] correlated double sampling CDs
《产品经理必读:五种经典的创新思维模型》的读后感
预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
Pychart ide Download
最新阿里P7技术体系,妈妈再也不用担心我找工作了
Sator推出Web3游戏“Satorspace” ,并上线Huobi
Shallow understanding Net core routing
随机推荐
Localstorage and sessionstorage
Skimage learning (3) -- adapt the gray filter to RGB images, separate colors by immunohistochemical staining, and filter the maximum value of the region
Blue Bridge Cup final XOR conversion 100 points
QT video transmission
模块六
科普达人丨一文弄懂什么是云计算?
预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
rpcms获取指定分类下的文章的方法
浅谈 Apache Doris FE 处理查询 SQL 源码解析
LeetCode 1654. 到家的最少跳跃次数 每日一题
MRS离线数据分析:通过Flink作业处理OBS数据
LeetCode 1981. Minimize the difference between the target value and the selected element one question per day
邮件服务器被列入黑名单,如何快速解封?
LeetCode 1043. 分隔数组以得到最大和 每日一题
Skimage learning (1)
【黄啊码】为什么我建议您选择go,而不选择php?
ByteDance Android gold, silver and four analysis, Android interview question app
Sort out several important Android knowledge and advanced Android development interview questions
Flask搭建api服务
国内首创!Todesk将RTC技术融入远程桌面,画质更清晰操作更流畅