2010-05-28 21 views
16

Cho đến bây giờ, tôi đã luôn nói rằng CakePHP quá cồng kềnh và chậm chạp. Tôi không thực sự biết điều đó, tôi chỉ thấy điểm chuẩn "một số". Điều tôi thực sự muốn biết, đó là nếu hai khung công tác đó (Symfony và CakePHP) quá chậm để có thể sử dụng được theo cách mà người dùng sẽ bị thất vọng. Tôi đã biết rằng những khuôn khổ đó chậm hơn so với các lựa chọn thay thế khác, nhưng đó không phải là câu hỏi.Symfony và CakePHP có quá chậm để sử dụng được không?

Tôi đặt câu hỏi bởi vì tôi muốn tạo một ứng dụng web quản lý dự án và tôi vẫn còn ngần ngại giữa một vài khung công tác. Tôi đã gặp rắc rối khi học Zend, nhưng tôi không cố gắng hết sức.

Vì vậy, trong kết luận, ngoài câu hỏi đầu tiên ở trên, tôi muốn hỏi một câu hỏi khác:

Nếu tôi muốn tạo ra một công cụ quản lý dự án (mà là một dự án khá lớn), trong đó các nội dung sau bạn nên đề nghị, xem xét thời gian Phát triển, tốc độ của các ứng dụng kết quả, và sự vững mạnh của sản phẩm cuối cùng:

  • Symfony
  • CakePHP
  • Zend Framework

Ngoài ra, tôi nên đề cập đến rằng tôi không biết bất kỳ khung công tác nào trong số đó và tôi muốn tìm hiểu một trong số đó (ít nhất).

+1

Vì bạn nên sử dụng một số loại bộ nhớ cache trong sản xuất, tôi không nghĩ rằng sự khác biệt tốc độ là quan trọng. Chỉ cần chọn một trong những bạn cảm thấy thoải mái nhất bằng cách sử dụng. – baloo

+0

Tôi nghĩ rằng downvoting điều này là quá khắc nghiệt; tuy nhiên nó đã được trả lời trước :-) – richsage

+0

Tôi không nghĩ tốc độ sẽ là mối quan tâm lớn đối với công cụ quản lý dự án. – Tom

Trả lời

20

Vấn đề với điểm chuẩn, là họ thường không thể tự mình vay mượn với thế giới thực. Viết một ứng dụng thực sự, và bạn sẽ thấy rằng tất cả các khung công tác đều nằm trong khoảng thứ tự tầm quan trọng của nhau khi nói đến tốc độ. Và tất cả chúng đều chậm hơn nếu bạn không sử dụng một khung công tác (và biết cách lập trình).

Tuy nhiên, những gì bạn cần xem xét là sự cân bằng. Frameworks hy sinh một hiệu suất nhỏ cho khả năng giảm đáng kể thời gian phát triển. Điều gì quan trọng hơn với bạn, hiệu suất không được pha trộn thô hoặc thời gian phát triển nhanh chóng hợp lý? Facebook sẽ không sử dụng một khung công tác RAD cho trang web của họ, nhưng đó là bởi vì hiệu suất với chúng đáng giá hơn thời gian phát triển thêm. Tương tự như vậy, một công ty nhỏ với một nhà phát triển duy nhất có khả năng hưởng lợi nhiều hơn từ một khuôn khổ so với hiệu suất nhỏ hợp lý (tôi nói nhỏ, bởi vì tác động trên mỗi lần xem trang là tối thiểu. Hiệu ứng "tăng lên" với lưu lượng truy cập cao hơn).

Điều tôi muốn đề xuất, hãy xem qua một loạt các khung công tác. Hãy thử chúng (hầu hết đều có hướng dẫn "blog"). Hãy cảm nhận cách họ làm việc. Chọn một cái mà bạn thích, và sau đó chơi với nó một lúc. Tìm hiểu phong cách mã hóa của nó, và làm thế nào nó thích làm những việc ... Quan trọng nhất, tìm hiểu cách nó hoạt động. Cố gắng tìm hiểu "lý do" đằng sau các chi tiết. Khả năng sử dụng một khuôn khổ là IMHO trực tiếp gắn liền với sự hiểu biết về cách nó hoạt động ... Không sử dụng một cái gì đó bạn đang khó chịu sử dụng trừ khi bạn phải. Tìm một "phù hợp" với bạn, và sau đó gắn bó với nó cho đến khi bạn thành thạo ...

+2

Tôi muốn thêm rằng khuôn khổ hầu như không bao giờ là kết quả của một nút cổ chai hiệu suất. Đó là trong nhiều trường hợp các kỹ thuật nghèo khác đang được sử dụng. 1 bộ chọn css xấu có thể giết hiệu suất của bạn cũng giống như sử dụng một khung công tác. Tôi cảm thấy như câu hỏi này cũng giống như thảo luận về ngôn ngữ biên soạn ngôn ngữ kịch bản lệnh VS. Như chúng ta đã thấy với hphp, có vẻ như nó chỉ tăng 30%, có nghĩa là không có gì cho các trường hợp khi bạn có ít hơn 5000 máy chủ. – Parris

2

Sự khác biệt sẽ không đáng kể vì các phần chậm của bạn luôn là I/O - Cơ sở dữ liệu, Hệ tập tin, v.v. Đảm bảo bạn có một chiến lược lưu trữ dữ liệu tốt và không làm bất cứ điều gì quá ngu ngốc trong mã và nó sẽ không thành vấn đề.

+0

Mặc dù nó luôn dễ dàng chỉ ra rằng I/O thường sẽ là nút cổ chai trong một ứng dụng web (tôi đồng ý trong trường hợp này), tôi nghĩ rằng bạn chỉ là một mái tóc với kết luận của bạn rằng tất cả các khuôn khổ được tạo ra công bằng. –

+4

Tôi không nói chúng bình đẳng, chỉ là nó không quan trọng. Bạn có thể tạo một trang web chậm trong bất kỳ khuôn khổ nào, bất kỳ ngôn ngữ nào và bạn có thể tạo mã đẹp, hiệu quả và (trong tâm trí) của bạn trong mọi khung và ngôn ngữ. Nó kết thúc là những gì bạn cảm thấy thoải mái và những gì bạn học tốt nhất. – Justin

8

Tôi khuyên bạn nên sử dụng cakePHP v1.3 vì nó nhanh hơn và dễ hiểu hơn. Bạn sẽ tìm thấy trợ giúp rất tốt (tài liệu và hướng dẫn) liên quan đến khung này. Tài liệu được viết rõ ràng. Ngay cả khi bạn đang mắc kẹt ở một nơi nào đó bạn sẽ có thể tìm thấy một giải pháp trên stackoverflow hoặc nhóm google cakephp hoặc bằng cách tìm kiếm trên google.

Tôi đã làm việc trên cả hai phiên bản của cakephp (1.2 và 1.3) và tôi cũng đã thử một bàn tay trên khung công tác Zend (tôi cũng đã cố gắng hết mức của mình nhưng bị kẹt trong khuôn khổ khi thực hiện bố cục) .

Nhưng sau khi trải qua hơn một năm trên CakePHP, tôi tự hào nói rằng đó là khuôn khổ tốt nhất để làm việc.

+1

Bánh 2 thậm chí còn nhanh hơn, và nghiên cứu đang được thực hiện để cải thiện nó nhiều hơn trong phiên bản 3. –

6

Frameworks thường nhằm mục đích tổ chức mã tốt hơn, khả năng sử dụng lại của các thành phần, khả năng thử nghiệm và để khái quát hóa, chất lượng ứng dụng & khả năng bảo trì. Đây không phải là lựa chọn định hướng hiệu suất cao hơn.

Tôi nhận các trang web chạy với symfony khá nhanh, các điểm chuẩn đến gần với mẫu HTML tĩnh ban đầu.

Vấn đề về hiệu suất có thể xảy ra nhanh hơn khi sử dụng khung (và ORM như Doctrine) so với khi đặt mã spagetti bên trong trang tĩnh HTML. Đó là âm thanh bình thường với tôi: hơn treatements, nhiều xác minh, chế độ phụ thuộc, nhiều mã để phân tích, vv

Nếu bạn mant để làm cho ứng dụng nhanh hơn, họ là cơ bản để cách:

  1. Nhận nhanh hơn phần cứng, nó chi phí, nhưng có thể được giá trị nó nếu chi phí này là theo lập trình viên & chi phí kỹ sư, mà nói chung là trường hợp.
  2. Tối ưu hóa phần mềm, bước lớn hơn theo cách này là sử dụng bộ nhớ đệm trên nhiều cấp độ: mã khóa, kết quả truy vấn cơ sở dữ liệu, bất kỳ đối tượng nặng, hiển thị html (một phần và toàn bộ).

Với ứng dụng MVC được thiết kế tốt, bạn có thể quản lý hiệu suất dưới dạng vấn đề riêng biệt, sử dụng profiler để xem tắc nghẽn của ứng dụng và xử lý từng cái một (một lần nữa, tối ưu hóa cũng có thể ở phần cứng).

Việc lựa chọn một khung công tác PHP không nên được thực hiện trên các thử nghiệm hiệu suất khác nhau bị ảnh hưởng trên các arc arc, chúng không thể khách quan. Theo quan điểm của tôi, tất cả các khung công tác MVC chính có thể được sử dụng để xây dựng các trang web hoạt động, đó là vấn đề tối ưu hóa.

Nếu bạn và nhóm của bạn biết rõ hơn về Symfony, CakePHP hoặc Zend, thì hãy tiếp tục. Bạn sẽ xử lý tối ưu hóa hiệu suất khi ứng dụng của bạn hoạt động, có các giải pháp cho bất kỳ khung công tác nào.

Nếu kinh nghiệm đội là quá rộng và có ai có sở thích riêng của mình, sau đó tôi sẽ đề nghị personnaly Symfony, như khả năng bộ nhớ đệm của nó được tích hợp vào với khuôn khổ (Tôi không biết những người khác)

Các vấn đề liên quan