当前位置:网站首页>[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-18 21:29:00 【Hua Weiyun】
【 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 yes The server End 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 !】
边栏推荐
- The dplyr package of R language performs data grouping aggregation statistical transformations and calculates the grouping quantile of dataframe data
- [try to hack] NTLM and LM Foundation
- UE4 shadow: perobjectshadow verification
- Duplicate disk: problems when BN and dropout are used together
- [C language brush leetcode] 2155 All subscripts with the highest score in the group (m)
- Introduction to sap appgyver
- 音视频中的语音信号处理都包括哪些方向?
- Unity-2d pixel lattice ablation
- Data statistical analysis cases (comparative analysis, sales comparison analysis, year-on-year, double coordinate diagram, month on month, shift, contribution analysis (Pareto Law), differentiation an
- R language uses the designtreatmentsc function of vtreat package to build a data processing plan, and uses vtreat package for data preparation
猜你喜欢

Leetcode+ 86 - 90 double pointer, backtracking, interval DP topics

关于#sql#的问题:orcale sql, 为什么MERCHANT table的外键inventory—id 语句是无效的

Gd32f4 (6): serial port garbled caused by crystal oscillator

Sword finger offer 53 - ii Missing numbers from 0 to n-1

Idea creates new branches and merges code (others - > DEV)

实战项目:数据访问层时所遇问题

Based on servlet project -- blog system

Mathematical modeling - Classification Model (based on logistic regression)

New construction process of Hongmeng application development project and generation method of HAP package

Stm32f407---- power management
随机推荐
Markdown basic syntax format
Epic-kbs9 industrial computer brushing document
Leetcode high frequency question: image intersection and union ratio IOU calculation method and hand tearing code
Recommend a well written article on "I2C protocol explanation"
[leetcode problem solving report] 423 Rebuild numbers from English
C language as a push box
sentinel
Kotlin correctly exits the foreach and foreachindexed loop functions
题目2-IIS写权限漏洞分析溯源
【黄啊码】为什么我建议您选择go,而不选择php?
R language uses data The table package sorts the dataframe row data (sort the data rows based on multiple fields and variables without reordering the actual data changes), and calculates the cumulativ
[try to hack] NTLM and LM Foundation
Hystrix deployment
Win10 how to convert FAT32 format disks into NFTs format without formatting
Quick download of script
OSPF special area
What is the event delegation in JS?
GD32F4(6):晶振引发串口乱码
R language uses LM function to build multiple regression model, writes regression equation according to model coefficient, and uses summary function to calculate the summary statistical information of
[C language brush leetcode] 1432 The maximum difference that can be obtained by changing an integer (m)