IT

코드 실행 속도: ASP.NET-MVC 대 PHP

itgroup 2022. 11. 8. 21:45
반응형

코드 실행 속도: ASP.NET-MVC 대 PHP

저는 이것에 대해 동료와 우호적인 논쟁을 벌이고 있으며, 제 개인적인 의견은 ASP입니다.NET-MVC 컴파일된 웹 어플리케이션은 PHP로 작성된 동일한 프로젝트보다 더 효율적이고 빠르게 실행됩니다.내 친구는 동의하지 않는다.

유감스럽게도 저는 제 주장을 뒷받침할 만한 확실한 자료가 없습니다.(그도 그렇습니까?

이에 대해 구글을 통해 그가 틀렸다는 것을 증명하는 증거를 찾으려고 노력했지만 대부분의 경우 논쟁은 어떤 플랫폼에서 개발하는 것이 더 좋은지, 비용, 보안 기능 등으로 바뀌었다.이 논쟁을 위해서 나는 정말 그 어떤 것도 신경 쓰지 않는다.

ASP에서 개발된 일반적인 웹사이트의 Raw Speed/Efficiency에 대해 스택 오버플로 커뮤니티에서 어떻게 생각하는지 알고 싶습니다.MVC를 탑재한 NET과 PHP로 개발된 동일한 웹 사이트는 비교해도 될까요?

실제 시나리오에서 두 기술의 성능을 비교한 실제 사례를 가지고 있는 사람이 있습니까?

(여러분 중 일부는 이것이 무관하고 어쩌면 어리석은 논쟁일 수도 있다는 것을 알고 있지만, 이것은 논쟁이며, 저는 여전히 여기 S.O.에 있는 훌륭한 사람들의 대답을 듣고 싶습니다.)

각 스택의 차이는 결국 같은 작업을 다르게 수행하게 된다는 것을 의미하기 때문에 비교하기 어렵고, 비교 목적으로 동일한 작업을 수행하는 경우에는 그다지 현실적인 테스트가 아닙니다.

제가 좋아하는 PHP는 모든 요청을 로드하고 해석한 후 폐기하는 가장 기본적인 형태입니다.이 점에서는 CGI와 매우 흡사하다(약 15년 된 것을 생각하면 놀랄 일도 아니다).

예를 들어 APC를 사용한 opcode 캐싱은 성능을 개선하기 위해 수년간 다양한 최적화가 이루어졌습니다(APC는 PHP 6의 표준 부분이 되고 현재와 같은 옵션 모듈이 아닙니다).

그러나 PHP 스크립트는 기본적으로 일시적입니다.세션 정보는 (통상) 파일 기반이며 상호 배타적입니다(session_start()는 session_commit() 또는 스크립트가 완료될 때까지 동일한 사용자 세션에 액세스하는 다른 스크립트를 차단합니다). 단, ASP에서는 그렇지 않습니다.NET. 세션 데이터를 제외하고, ASP에서 애플리케이션 컨텍스트 내에 존재하는 오브젝트를 가지는 것은 매우 간단합니다(또, 통상의).NET(ASP의 경우는 Java).NET은, 보다 유사합니다).

이것이 중요한 차이입니다.예를 들어 PHP(mysql, mysqli, PDO 사용)에서의 데이터베이스 액세스는 일시적입니다(접속 지속에도 불구하고).Net/Java는 거의 항상 영속적인 접속 풀을 사용하고, 그 위에 구축해, 특정의 요구를 넘는 ORM 프레임워크등의 캐시를 작성합니다.

바이트 코드 해석 플랫폼(ASP).NET은 이론적으로 더 빠르지만 PHP가 할 수 있는 일의 한계는 너무 높아서 대부분의 사람들은 상관없다.예를 들어 인터넷 상의 상위 20개 사이트 중 4개가 PHP입니다.개발 속도, 견고성, 환경 운영 비용 등...스케일링을 시작할 때 이론적인 속도 차이보다 훨씬 더 중요한 경향이 있습니다.

명심하세요.Net은 PHP가 실행할 수 있는 것보다 더 빠른 코드를 만드는 원시 유형, 유형 안전 및 이러한 종류의 것들을 가지고 있습니다.다소 불공평한 테스트를 수행할 경우 두 플랫폼에서 100만 개의 랜덤64비트 정수 배열을 정렬합니다.ASP.NET은 PHP의 어소시에이티브 어레이보다 단순 어레이가 효율적이기 때문에 종료됩니다(그리고 최종적으로 PHP의 모든 어레이는 어소시에이티브입니다).또한 32비트 OS의 PHP에는 네이티브 64비트 정수가 없기 때문에 큰 문제가 발생합니다.

ASP도 지적해야 합니다.NET은 미리 컴파일되어 있는 반면 PHP는 즉석에서 해석됩니다(opcode caching 제외).그것은 차이를 만들 수 있지만, 이 점에 있어서 PHP의 유연성은 좋은 것입니다.서버를 바운스하지 않고 스크립트를 전개할 수 있는 것은 매우 좋은 일입니다.그냥 떨어뜨리면 효과가 있어요대단하다.하지만 궁극적으로는 성능이 떨어집니다.

내 생각에 넌 정말 무관한 세부사항을 따지고 있는 것 같아.

ASP.NET의 실행 속도가 빨라집니다.ASP.NET 개발 속도가 빨라집니다.고속 컴퓨터를 구입하여 비즈니스용 웹 애플리케이션을 사용하는 경우 즐겨보세요.

ASP.NET 코드는 릴리스 모드로 빌드, 최적화, 캐시 등으로 PHP에 비해 훨씬 빠르게 실행됩니다.그러나 웹 사이트(페이스북과 같은 대기업 제외)의 경우 페이지 렌더링 시간의 대부분은 데이터베이스에 액세스하고 문의하는 것입니다.

In connecting database ASP.NET is a lot better - in asp.net we typically use LINQ which translates our object queries into stored procedures in SQL server database. Also connection to database is persistent, one for one website, there is no need for reconnecting.

PHP, in comparison, can't hold sql server connection between request, it connect, grab data from db and destroys, when reconnecting the database is often 20-30% of page rendering time.

Also whole web application config is reloaded in php on each request, where in asp.net it persist in memory. It can be easily seen in big, enterprise frameworks like symfony/symfony2, a lot of rendering time is symfony internal processess, where asp.net loads it's once and don't waste your server for useless work.

ASP.NET can holds object in cache in application memory - in php you have to write it to files, or use hack like memcache. using memcache is a lot of working with concurrency and hazard problems (storing cache in files also have it's own problems with concurrency - every request start new thread of apache server and many request can work on one time - you have to think about concurrency between those threads, it take a lot of development time and not always work because php don't have any mutex mechanisms in language, so you can't make critical section by any way).

now something about development speed: ASP.NET have two main frameworks designed for it (Webforms and MVC), installed with environment, where in PHP you must get a open-source framework. There is no standard framework in php like in asp.NET.

ASP.NET language is so rich, standard library has solutions for very much common problems, where PHP standard library is ... naked... they can't keep one naming convention.

.NET has types, where PHP is dynamic, so it means no control about source code until you run it or write unit tests.

.NET has great IDE where PHP IDE's are average or average-good (PHPStorm is still a lot worse than VS+resharper or even without it)

PHP scaffolding in symfony is fired from command line when ASP.NET scaffolding is integrated into environment.

my (1 코어 2,2 ghz)와 같이 느린 컴퓨터를 사용하는 경우, PHP 코드가 즉시 갱신되는 소스 코드의 변경에 따라 프로젝트를 재컴파일해야 하기 때문에 asp.net 페이지를 개발하는 것은 번거로울 수 있습니다.

PHP 언어 구문은 C# 구문에 비해 미완성이고 신뢰성이 없으며 네이키드입니다.C#의 강력한 타입과 많은 유연한 언어 기능을 통해 개발 속도를 높이고 코드 버그를 줄일 수 있습니다.

내 경험상 (하드벤치마크 없음) Asp.Net은, 확실히, 원시 속도 면에서 PHP에 필적할 수 있습니다(그리고 일부의 분야에서는 이를 웃돌고 있습니다.그러나 다른 언어 선택과 관련된 많은 질문과 마찬가지로 다음 문장이 (내 생각에) 유효하다.

  • 언어 x(PHP 또는 ASP)에는 느리고 버그가 많은 사이트가 있습니다.네트워크)
  • 언어 x(PHP 또는 ASP)로 된 훌륭하고 빠른 사이트가 있습니다.네트워크)

제가 말하고자 하는 것은 (개발자의 재능)이 두 가지(어느 정도 추상화된 범위에서는 거의 동등한) 기술 중에서 선택하는 것보다 전반적인 속도에 더 많은 영향을 미친다는 것입니다.

실제로 '전체 속도' 비교는 매우 특별한 전문 분야(당신이 우리에게 알려주지 않은)가 아니면 어떤 식으로든 서로를 따라잡을 수 있기 때문에 의미가 없습니다.

나는 성능 테스트를 했다.

프로그램 : 10000000 번호의 합계

enter image description here

enter image description here

지정된 출력은 php가 C#................보다 느리다는 것을 나타냅니다.

저는 ASP.net이라고 생각합니다.

고려해야 할 사항:

  • ASP.net은 프리 인스톨 되어 있습니다.
  • ASP.net은 보통 C#으로 작성되며 PHP보다 빠르게 실행됩니다.

물론, 차이는 매우 작습니다.두 가지 모두 장점이 있습니다. PHP는 IIS뿐만 아니라 어떤 서버에서도 쉽게 도입할 수 있고 실행할 수 있습니다.나는 ASP.net MVC를 꽤 좋아한다.

저는 두 테크놀로지(ASP)의 개발자 전문가입니다.net c# 및 PHP5).수년간 실제 운영 환경에서 작업하고 비교한 결과 다음과 같은 인상을 받았습니다.

  • 우선, 1.000.000의 값을 더하는 루프를 만들면서 비교할 수 없습니다. 이는 실제 사례가 아닙니다.

  • 실제 생산환경과 개발환경에서의 비교는 다릅니다.예: ASP 개발 중.Net은 기본적으로 IIS를 사용하지 않습니다. 최적화가 다른 내부 개발 서버를 사용하십시오.개발에서는 동시성이 없습니다.

제 의견은 다음과 같습니다.

  • c#의 1.000.000배 루프가 빨라집니다.(no sense)

  • DB에 액세스하고 이미지를 표시하며 양식을 가진 실제 페이지를 제공합니다.ASP.Net은 PHP보다 느립니다.

  • ASPX 페이지의 무게는 PHP보다 10배 무거워 최종 사용자가 페이지를 가져올 때까지 더 오래 기다려야 합니다.

  • ASPX는 PHP보다 개발 속도가 느리지만, 이는 결국 돈이 되기 때문에 중요합니다.PHP는 ASP보다 35% 빠르게 개발됩니다.Net, smthg를 체크할 때마다 컴파일하고 재시작해야 하기 때문입니다.

  • 대규모 프로젝트에서는 ASP.장기적으로는 넷이 오류를 방지하고 복잡한 구조를 갖출 수 있습니다.

  • Windows Servers, IIS, ...의 경우, 최종적으로 PHP와 같은 수의 사용자를 ASP에 보유할 수 있는 파워풀 서버가 필요합니다.예: 우리는 ASP.net에서 20.000명의 동시 사용자를 처리하고 있으며, PHP에서는 동일한 서버가 30.000명의 사용자를 배치할 수 있습니다.

중요한 것은 어떤 것이 더 빠른지 루프하는 것이 아닙니다.웹 사이트가 실제 운영 중일 때, 사용자가 얼마나 많은 사용자를 보유할 수 있는지, 페이지 무게가 얼마나 되는지(사용자의 대기 시간 증가, 서버의 순 비용 증가, 서버의 디스크 비용 증가, 서버의 메모리 비용 증가)가 중요합니다.동시에 체크 시간을 시도하면 알 수 있습니다.

도움이 됐으면 좋겠다.

최적화 없이 .net 컴파일된 앱은 물론 php보다 "빠르게" 실행됩니다.하지만 그것은 자랑할 권리 외에는 현실 세계와 아무런 관련이 없기 때문에 어리석고 무관한 논쟁이라는 당신의 말은 옳다.

일반적으로 ASP입니다.Net은 PHP, ASP보다 특정 하드웨어에서 더 나은 성능을 발휘합니다.넷 MVC는 더 나은 결과를 얻을 수 있습니다(여기서 중요한 단어가 될 수 있습니다).대부분의 플랫폼은 엔터프라이즈 개발을 염두에 두고 설계되었습니다.테스트 가능 코드, 문제 분리 등ASP에 많은 문제가 있습니다.넷은 페이지 내의 오브젝트스택에서 가져옵니다(네스트된 컨트롤).프리 컴파일을 하면 퍼포먼스가 향상되지만 중요한 문제가 될 수 있습니다.MVC는 웹 양식 기반 뷰 엔진을 사용하여 중첩을 줄이는 경향이 있습니다(기타 사용 가능).

웹 애플리케이션의 속도가 가장 느려지는 것은 원격 서비스, 특히 데이터베이스의 지속성입니다.PHP는 연결 풀링 또는 메모리 내 세션 상태를 사용하지 않고 프로그래밍됩니다.이는 memcached 및 기타 고성능 서비스 계층(.Net에서도 사용 가능)을 통해 극복할 수 있습니다.

It really comes down to the specifics of a site/application. this site happens to run MVC on fairly modest hardware quite well. A similar site under PHP would likely fall under its own weight. Other things to consider. IIS vs. Apache vs LightHTTPD etc. Honestly the php vs asp.net is much more than raw performance differences. PHP doesnt lend itself well to large, complex applications nearly so much as asp.net mvc, it's that simple... This itself has more to do with VS+SCC than anything else.

I'd tend to agree with you (that ASP.NET MVC is faster), but why not make a friendly wager with your friend and share the results? Create a really simple DYNAMIC page, derived from a MySQL database, and load the page many times.

For example, create a table with 1,000,000 rows containing a sequential primary key, and then a random # in the second column. Each of your sites can accept the primary key in a GET, retrieve the random # based on the passed in key, and display the random # in some type of dynamically generated html.

I'd love to know the results ... and if you have a blog or similar, the rest of the world would too (this question gets asked ALL the time).

It would be even better if you could build this simple little app in regular ASP too. Heck, I'd even pay you for these results if the test was well designed. Seriously - just express your interest here and I'll send you my e-mail.

Need to note that question is .NET MVC vs PHP, not .NET (Web Forms) vs PHP. I don't have the facts, but general feeling is PHP websites run faster than .NET Web form sites (and I do .NET only). .NET web forms despite being compiled vs interpreted PHP is generally slow because all the chunk of code that is autogenerated by the .NET engine to render the HTML for each < asp:control > you use on design mode. Getting a .NET web form to compete in speed with PHP is a complete odisea that starts with setting EnableViewState = false, and can end on using every html control with runat=server... crazy uh?

Now, MVC is a different story, I had made two websites using .NET MVC2 and feeling is good, you can feel the speed now! and code is as clean as any PHP website. So, now, MVC allows you write clean code as PHP does, and MVC is compiled against PHP interpreted, it can only lead to one thing, MVC faster than PHP... time will prove, when the general sense is "MVC websites runs faster than PHP" then we will be right about what I say here today.

see/you/!

C++... Right now the fight will be between PHP and ASP.NET. PHP will win on ease of use, ASP.NET will win on performance ( in a windows server ecosystem). A lot of the larger websites that started with php have graduated to C++.

ReferenceURL : https://stackoverflow.com/questions/691942/speed-of-code-execution-asp-net-mvc-versus-php

반응형