Tại sao một ngôn ngữ lâu đời là PHP lại nhanh hơn so với một ngôn
ngữ thịnh hành khác, đó là ASP.Net? Hay có thể ngược lại? Bạn có thể tham gia những khóa học PHP & MySQL - Học lập trình cơ bản hoặc tham khảo các tài liệu mà chúng tôi chia sẻ. Sau đây, chúng
tôi sẽ cho các bạn thấy những sự thật về vấn đề này.

Rất nhiều lần, tôi đã nghe nói rằng, khi bạn phát triển một ứng dụng hay
một website bằng PHP, ứng dụng của bạn sẽ chạy nhanh hơn nhiều so với
ASP.Net. Website được phát triển bằng ASP.Net thiếu uyển chuyển và chậm
chạp.
Phần mà tôi bực nhất đó là những thứ mà tôi được đọc điều
có cùng ý kiến như vậy nhưng không ai chứng minh điều đó. Nhưng tôi biết
rằng, điều này là sai, vì một lý do nào đó, ngôn ngữ PHP đã được chấp
nhận rộng rãi. Nó trở thành một cuộc tranh luận dài dẳng mà quên đi việc
tìm hiểu hay kiểm tra nó.
Thay vì nói nhiều hơn, chúng tôi quyết
định dừng lại và cố gắng chứng minh nó. Và hãy nhớ rằng, PHP là một
ngôn ngữ tuyệt vời và mạnh mẽ, tôi cũng rất thích cách viết mã của PHP
và tôi không có lý do gì để chống lại nó hay thiên vị ngôn ngữ khác. Và
bài viết này cũng không phải để chọn bên, mặc dù bây giờ chúng tôi phát
triển ASP.Net và chúng tôi cũng rất thích nó.
Một lời khuyên khác
khi các bạn đọc bài viết này: "Các bạn không nên chọn ngôn ngữ phát
triển cho bạn bởi tốc độ, hãy chọn ngôn ngữ mà bạn thích".
Sau đây là một vài so sánh về 2 ngôn ngữ trên:
Kỹ Thuật
Theo đánh giá chung, các giải pháp của Microsoft rất tốt ở cấp
Enterprise (cái này thì chỉ có J2EE sánh được). Xin đừng nhầm lẫn giữa
khái niệm Enterprise với website có nhiều người truy cập, ở đây nói về
độ phức tạp của các dịch vụ, độ tin cậy, tính khả chuyển… những tiêu
chuẩn mà chỉ khi thiết kế các ứng dụng phục vụ cho các tập đoàn lớn thì
chúng ta mới đụng tới. Tuy nhiên đi kèm với nó cũng là sự phức tạp và
tốn kém tài nguyên.
PHP rất thích hợp hơn cho những nhóm phát triển nhỏ, cho cách phát triển kiểu agile, nghĩa là có thời gian phát triển và đưa vào sử dụng nhanh. Nhưng điều này không có nghĩa là PHP dành cho những website có ít người sử dụng, rất nhiều website có hàng triệu người sử dụng hàng ngày làm trên PHP.
Chi Phí
Rõ ràng là phát triển các ứng dụng thiết kế web bằng ASP.Net tốn kém hơn nhiều so với PHP. Bạn phải trả cho SQL Server, Windows Server, Visual Studio, MSDN và hỗ trợ kỹ thuật cao hơn nhiều so với LAMP là của cộng đồng mã nguồn mở. Dù rằng ở VN chúng ta thường dùng phần mềm “chùa” nhưng nếu tạo một ứng dụng thương mại nghiêm túc thì chi phí bản quyền trả cho M$ là rất lớn.
Ngược lai, chi phí sở hữu tổng cộng (Total ownership cost) của LAMP lại có thể cao hơn nhất là khi bạn quản trị nhiều server Linux lớn do thiếu các chuyên gia giỏi về Linux.
Tốc độ
Có khá nhiều tranh cãi về tốc độ của LAMP hay của ASP.Net + SQL Server cao hơn. Cái này còn tùy vào cấu hình, đặc thù của ứng dụng. Nhìn chung về mặt web server, Linux “có tiếng” hơn Windows Server về tốc độ (Google, Yahoo đều dùng Linux server cho các dịch vụ của mình và tôi không dám phàn nàn gì về tốc độ cả!). Theo một số người, PHP script nhanh hơn ASP.Net script (như C#, VB.Net) trong các tác vụ thông thường và tốn ít bộ nhớ hơn, tuy nhiên điều này cũng còn nhiều tranh cãi!.
Về database server, MySQL có tốc độ rất tốt (đặc biệt là kiểu MyISAM) nhưng thiếu một số tính năng cao cấp như stored procedure, trigger (phiên bản MySQL 5 có hỗ trợ các tính năng này nhưng còn yếu và có bug). Bài viết này sẽ giúp bạn có so sánh nhiều mặt hơn giữa MySQL và SQL Server: "MySQL or SQL Server: Look beyond politics and hype when deciding which to use". Tất nhiên, PHP cũng có thể dùng với nhiều database khác, còn ASP.Net dùng với Oracle thì không có gì phải bàn về tốc độ cả.
Ý kiến riêng của tôi là bạn không cần phải băn khoăn gì về tốc độ của PHP + MySQL cho bất kỳ website nào dù lớn hay nhỏ. Vấn đề chi là thiết kế ứng dụng hiệu quả và tìm được dịch vụ hosting tốt. Điều này cũng đúng cả với ASP.Net.
Bảo mật và Virus
Khỏi cần phải nói, Linux luôn có tiếng tốt về bảo mật và cũng ít bị các loại virus nhắm vào. Nhưng để cho trang web của bạn thực sự bảo mật thì lại là vấn đề của người lập trình thiết kế website, cả PHP và ASP.Net đều có những lỗ hổng có thể khai thác.
Cộng đồng phát triển và mã nguồn
Nói chung bạn có thể nhận đựơc nhiều mã nguồn và sự giúp đỡ từ cộng đồng mã nguồn mở như PHP miễn là bạn có kỹ năng “Search” tốt. Ngược lại MSDN đựơc đầu tư công phu và rất hữu ích giúp cho việc tìm kiếm nhanh chóng hơn. Một vài website như Codeproject.com cũng có rất nhiều mã nguồn ASP.Net giá trị.
Chúng ta thường bị “nói quá” về ngôn ngữ này hay ngôn ngữ kia tốt hơn, thực tế là cái nào tốt hơn hoàn toàn phụ thuộc vào kỹ năng của người lập trình và quản lý hệ thống. Trong khi phần lớn các website lớn của Việt Nam chọn ASP.Net thì PHP và Java lại.
Asp.Net là một ngôn ngữ được tối ưu hóa và biên soạn, có nghĩa là mã lệnh bạn viết sẽ được biên dịch lại thành một tập tin thực thi. Thậm chí nếu bạn không biên dịch các mã lệnh của bạn trước khi triển khai, nó vẫn sẽ tự động biên dịch lần đầu tiên khi được chạy, rồi sau đó nó chạy như mã biên dịch.
Php lại là một ngôn ngữ giải thích, có nghĩa là nó được lưu dưới dạng mã lệnh của bạn và chạy trực tiếp từ mã.
Có một điều được chấp nhận rộng rãi và đã được chứng minh là các chương trình biên soạn thường chạy nhanh hơn so với những chương trình giải thích vì chương trình giải thích phải hướng dẫn máy khi chạy. Đây là một trích dẫn từ Wikipedia cho thấy rõ điều đó: "A program translated by a compiler tends to be much faster than an interpreter executing the same program: even a 10:1 ratio is not uncommon. The mixed solution's efficiency is typically somewhere in between."
Các bảng xếp hạng và điểm chuẩn sau đây được lấy từ WrenSoft và các kết quả sẽ được hiển thị một cách đơn giản nhất.
Đồ thị đầu tiên sẽ cho thấy thời gian thực hiện để tạo ra và hiển thị kết quả tìm kiếm của một trang web nhỏ.

Như bạn có thể thấy, thời gian trung bình cho các trang web php: 0,1500 giây, thời gian Asp.Net: 0,0150 giây ... đó là một sự khác biệt rất lớn, việc tìm kiếm php mất 10 lần so với ASP.Net! Có người cũng đã làm như vậy với một trang web lớn hơn, và kết quả là không có nhiều khác nhau.

Php mất trung bình 1,0097 giây trong khi chạy Asp.Net mất 0,0810 giây; php vẫn chậm hơn khoảng 12 lần so với ASP.Net.
Nhưng, có người nói, thí nghiệm này chạy trên một máy tính windows, đó lại là sân nhà của ASP.Net. Và lập luận này khiến nhiều tín đồ PHP không đồng ý với kết quả trên. Vì thế, một cuộc thí nghiệm khác được thực hiện trên máy tính chạy LINUX, sân nhà của PHP, C# sẽ được chạy trên MONO
Các kết quả được lấy từ shootout.alioth.debian.org, đây là một website có rất nhiều tiêu chuẩn cho tất cả các loại ngôn ngữ và là một nguồn khảo sát tuyệt vời. Sau đây là kết quả:


Như bạn có thể thấy, ngay cả trên Linux, ASP.Net vẫn nhanh hơn PHP nhiều lần.
PHP là một ngôn ngữ tuyệt vời, và được rất nhiều người sử dụng, nhưng không phải là vì nó có nhiều người sử dụng, thì có nghĩa là nó sẽ nhanh hơn. Cũng như rất nhiều thứ khác, khi có đủ số người cùng nói lên một vấn đề gì đó một cách lâu dài, nó sẽ trở thành "sự thật".
Phát triển Php rất tốt, một số lượng lớn các ứng dụng tuyệt vời và các trang web được viết bằng nó. Điều đó nói rằng, bạn không nên chọn ngôn ngữ của bạn vào dựa tốc độ, ưu tiên phát triển vẫn quan trọng hơn nhiều. Hãy sử dụng Php, nếu bạn cảm thấy nó là một ngôn ngữ tốt và bạn thích nó.
Quan trọng nhất là hãy tập trung vào những gì cần thiết: cách lập trình của bạn có thể giải quyết tốt nhiều thứ, bạn cũng không cần phải biện minh cho bất cứ ai, hay cố chứng minh cái nào nhanh hơn hoặc tốt hơn. Các bạn cũng không cần lôi kéo các lập trình viên khác theo ngôn ngữ lập trình của mình. Hãy là một lập trình viên tốt, hãy là chính bạn.
PHP rất thích hợp hơn cho những nhóm phát triển nhỏ, cho cách phát triển kiểu agile, nghĩa là có thời gian phát triển và đưa vào sử dụng nhanh. Nhưng điều này không có nghĩa là PHP dành cho những website có ít người sử dụng, rất nhiều website có hàng triệu người sử dụng hàng ngày làm trên PHP.
Chi Phí
Rõ ràng là phát triển các ứng dụng thiết kế web bằng ASP.Net tốn kém hơn nhiều so với PHP. Bạn phải trả cho SQL Server, Windows Server, Visual Studio, MSDN và hỗ trợ kỹ thuật cao hơn nhiều so với LAMP là của cộng đồng mã nguồn mở. Dù rằng ở VN chúng ta thường dùng phần mềm “chùa” nhưng nếu tạo một ứng dụng thương mại nghiêm túc thì chi phí bản quyền trả cho M$ là rất lớn.
Ngược lai, chi phí sở hữu tổng cộng (Total ownership cost) của LAMP lại có thể cao hơn nhất là khi bạn quản trị nhiều server Linux lớn do thiếu các chuyên gia giỏi về Linux.
Tốc độ
Có khá nhiều tranh cãi về tốc độ của LAMP hay của ASP.Net + SQL Server cao hơn. Cái này còn tùy vào cấu hình, đặc thù của ứng dụng. Nhìn chung về mặt web server, Linux “có tiếng” hơn Windows Server về tốc độ (Google, Yahoo đều dùng Linux server cho các dịch vụ của mình và tôi không dám phàn nàn gì về tốc độ cả!). Theo một số người, PHP script nhanh hơn ASP.Net script (như C#, VB.Net) trong các tác vụ thông thường và tốn ít bộ nhớ hơn, tuy nhiên điều này cũng còn nhiều tranh cãi!.
Về database server, MySQL có tốc độ rất tốt (đặc biệt là kiểu MyISAM) nhưng thiếu một số tính năng cao cấp như stored procedure, trigger (phiên bản MySQL 5 có hỗ trợ các tính năng này nhưng còn yếu và có bug). Bài viết này sẽ giúp bạn có so sánh nhiều mặt hơn giữa MySQL và SQL Server: "MySQL or SQL Server: Look beyond politics and hype when deciding which to use". Tất nhiên, PHP cũng có thể dùng với nhiều database khác, còn ASP.Net dùng với Oracle thì không có gì phải bàn về tốc độ cả.
Ý kiến riêng của tôi là bạn không cần phải băn khoăn gì về tốc độ của PHP + MySQL cho bất kỳ website nào dù lớn hay nhỏ. Vấn đề chi là thiết kế ứng dụng hiệu quả và tìm được dịch vụ hosting tốt. Điều này cũng đúng cả với ASP.Net.
Bảo mật và Virus
Khỏi cần phải nói, Linux luôn có tiếng tốt về bảo mật và cũng ít bị các loại virus nhắm vào. Nhưng để cho trang web của bạn thực sự bảo mật thì lại là vấn đề của người lập trình thiết kế website, cả PHP và ASP.Net đều có những lỗ hổng có thể khai thác.
Cộng đồng phát triển và mã nguồn
Nói chung bạn có thể nhận đựơc nhiều mã nguồn và sự giúp đỡ từ cộng đồng mã nguồn mở như PHP miễn là bạn có kỹ năng “Search” tốt. Ngược lại MSDN đựơc đầu tư công phu và rất hữu ích giúp cho việc tìm kiếm nhanh chóng hơn. Một vài website như Codeproject.com cũng có rất nhiều mã nguồn ASP.Net giá trị.
Chúng ta thường bị “nói quá” về ngôn ngữ này hay ngôn ngữ kia tốt hơn, thực tế là cái nào tốt hơn hoàn toàn phụ thuộc vào kỹ năng của người lập trình và quản lý hệ thống. Trong khi phần lớn các website lớn của Việt Nam chọn ASP.Net thì PHP và Java lại.
Ngôn ngữ biên soạn và Ngôn ngữ biên dịch
Trước hết, hai ngôn ngữ này rất khác nhau.Asp.Net là một ngôn ngữ được tối ưu hóa và biên soạn, có nghĩa là mã lệnh bạn viết sẽ được biên dịch lại thành một tập tin thực thi. Thậm chí nếu bạn không biên dịch các mã lệnh của bạn trước khi triển khai, nó vẫn sẽ tự động biên dịch lần đầu tiên khi được chạy, rồi sau đó nó chạy như mã biên dịch.
Php lại là một ngôn ngữ giải thích, có nghĩa là nó được lưu dưới dạng mã lệnh của bạn và chạy trực tiếp từ mã.
Có một điều được chấp nhận rộng rãi và đã được chứng minh là các chương trình biên soạn thường chạy nhanh hơn so với những chương trình giải thích vì chương trình giải thích phải hướng dẫn máy khi chạy. Đây là một trích dẫn từ Wikipedia cho thấy rõ điều đó: "A program translated by a compiler tends to be much faster than an interpreter executing the same program: even a 10:1 ratio is not uncommon. The mixed solution's efficiency is typically somewhere in between."
Những con số
Bây giờ chúng ta sẽ quên đi các lý thuyết về lý do tại sao nó là nhanh hơn, hãy để một vài con số chấm dứt các cuộc thảo luận về hai ngôn ngữ này.Các bảng xếp hạng và điểm chuẩn sau đây được lấy từ WrenSoft và các kết quả sẽ được hiển thị một cách đơn giản nhất.
Đồ thị đầu tiên sẽ cho thấy thời gian thực hiện để tạo ra và hiển thị kết quả tìm kiếm của một trang web nhỏ.
Như bạn có thể thấy, thời gian trung bình cho các trang web php: 0,1500 giây, thời gian Asp.Net: 0,0150 giây ... đó là một sự khác biệt rất lớn, việc tìm kiếm php mất 10 lần so với ASP.Net! Có người cũng đã làm như vậy với một trang web lớn hơn, và kết quả là không có nhiều khác nhau.
Php mất trung bình 1,0097 giây trong khi chạy Asp.Net mất 0,0810 giây; php vẫn chậm hơn khoảng 12 lần so với ASP.Net.
Nhưng, có người nói, thí nghiệm này chạy trên một máy tính windows, đó lại là sân nhà của ASP.Net. Và lập luận này khiến nhiều tín đồ PHP không đồng ý với kết quả trên. Vì thế, một cuộc thí nghiệm khác được thực hiện trên máy tính chạy LINUX, sân nhà của PHP, C# sẽ được chạy trên MONO
Các kết quả được lấy từ shootout.alioth.debian.org, đây là một website có rất nhiều tiêu chuẩn cho tất cả các loại ngôn ngữ và là một nguồn khảo sát tuyệt vời. Sau đây là kết quả:
Như bạn có thể thấy, ngay cả trên Linux, ASP.Net vẫn nhanh hơn PHP nhiều lần.
Cuối cùng, chúng ta có thể tập trung vào những gì quan trọng?
Khi các bạn tìm kiếm thông tin trên mạng khi so sánh 2 ngôn ngữ, các bạn sẽ thấy rằng hầu như tất cả các bài viết hét lên rằng Php là nhanh hơn, nhưng bạn sẽ không tìm thấy bất kỳ liên kết hoặc bằng chứng nào ủng hộ điều này.PHP là một ngôn ngữ tuyệt vời, và được rất nhiều người sử dụng, nhưng không phải là vì nó có nhiều người sử dụng, thì có nghĩa là nó sẽ nhanh hơn. Cũng như rất nhiều thứ khác, khi có đủ số người cùng nói lên một vấn đề gì đó một cách lâu dài, nó sẽ trở thành "sự thật".
Phát triển Php rất tốt, một số lượng lớn các ứng dụng tuyệt vời và các trang web được viết bằng nó. Điều đó nói rằng, bạn không nên chọn ngôn ngữ của bạn vào dựa tốc độ, ưu tiên phát triển vẫn quan trọng hơn nhiều. Hãy sử dụng Php, nếu bạn cảm thấy nó là một ngôn ngữ tốt và bạn thích nó.
Quan trọng nhất là hãy tập trung vào những gì cần thiết: cách lập trình của bạn có thể giải quyết tốt nhiều thứ, bạn cũng không cần phải biện minh cho bất cứ ai, hay cố chứng minh cái nào nhanh hơn hoặc tốt hơn. Các bạn cũng không cần lôi kéo các lập trình viên khác theo ngôn ngữ lập trình của mình. Hãy là một lập trình viên tốt, hãy là chính bạn.
Không có nhận xét nào:
Đăng nhận xét