当前位置:网站首页>[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 !】

原网站

版权声明
本文为[Yellow Size]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071532458117.html