2012-01-18 26 views
8

Tôi đang trong quá trình viết một lớp học có thể sẽ kết thúc bằng khoảng 3000 dòng mã.Việc khởi tạo một lớp lớn trên một trang có làm chậm nó xuống không?

Điều tôi muốn biết là rất đơn giản, sẽ khởi tạo lớp này ở đầu mỗi trang làm chậm thời gian chạy trang, mặc dù chỉ có một/hai phương thức đối tượng sẽ được sử dụng? Liệu nó có gây căng thẳng nhiều hơn cho máy chủ của tôi nếu nó đang được truy cập vài nghìn lần một ngày không?

Nếu vậy, tôi có nên xem xét việc tạo tiện ích để xử lý từng phương thức thay vì có toàn bộ lớp trong một tệp không?

EDITED

Thứ nhất, chỉ để sửa KingCrunch và Kenaniah, lớp này là dành cho API của tôi, mà resultantly có nghĩa là nó giữ rất nhiều chức năng để lấy dữ liệu sẽ được hiển thị trên trang web và ứng dụng iPhone của chúng tôi , cùng với toàn bộ Ứng dụng Facebook của chúng tôi. Vì vậy, 3000 dòng là khá damn nhỏ cho kích thước và khả năng của trang web của chúng tôi, chưa kể rằng hơn 700 dòng này là ý kiến. Vì vậy, tôi có thể đảm bảo với bạn rằng không có lỗi thiết kế, mặc dù có thể có lỗ hổng cấu trúc, đó là lý do tại sao tôi hỏi câu hỏi này ...

Hàm xây dựng chỉ đặt giá trị mặc định cho biến được xác định, không có gì khác.

Tôi đã viết lại hoàn toàn tệp này từ đầu nên không có mã cũ và tôi chắc chắn rằng các phương thức trong lớp có hiệu quả như chúng có thể có.

Tôi đã theo dõi việc sử dụng máy chủ của mình, cũng như mô phỏng khối lượng lưu lượng truy cập cao bằng công cụ apache ab và mặc dù mức sử dụng bộ nhớ của tôi tăng lên, dường như không sao.

+3

một 3000 LOCs-class âm thanh giống như một lỗ hổng thiết kế, hơn là một vấn đề hiệu suất ... – KingCrunch

+0

Tóm lại, có nó sẽ làm chậm nó xuống vì nó sẽ phải khởi tạo lớp đó. Nó có thể không phải là xấu như bạn nghĩ rằng nó là mặc dù. Có vẻ như bạn có thể muốn xem câu hỏi liên quan này: http://stackoverflow.com/questions/1424382/one-compressed-file-of-classes-vs-multiple-class-files-in-php – tjarratt

+2

Câu trả lời ngắn gọn: * Vâng*. Câu trả lời dài: Có một tập hợp các yếu tố vô hạn * làm chậm * một trang. Những gì bạn * mất * trong 3000 dòng mã có thể được tạo ra ở nơi khác. –

Trả lời

4

sẽ bắt đầu lớp học này ở phía trên cùng của mỗi trang làm chậm thời gian chạy của trang

Nó sẽ thêm vào thời gian chạy? Vâng. Tất nhiên. Không có gì miễn phí. Mỗi dòng mã phân tích cú pháp có một số chi phí nhỏ (tuy nhiên bạn có thể loại bỏ hầu hết các chi phí này với một bộ nhớ cache opcode như APC). Tuy nhiên, chúng ta đang nói về chi phí phụ trên mili giây. Cách duy nhất để chắc chắn là tự cấu hình nó.

Có phải nó sẽ gây căng thẳng hơn cho máy chủ của tôi nếu máy chủ đang truy cập hàng nghìn lần mỗi ngày không?

Từ trải nghiệm cá nhân, không. Nhưng một lần nữa, hồ sơ và đo lường chính mình. Bạn nên theo dõi số liệu hiệu suất cơ bản trên máy chủ của mình (sử dụng CPU, tải trung bình, v.v.). Triển khai thay đổi của bạn và xem số liệu của bạn.

+0

cho phần đầu tiên, nó phụ thuộc, nếu anh ta cần 3k dòng, và xem xét chia nó thành nhiều lớp, anh ta sẽ kết thúc tải tất cả từng người một, mà sẽ làm chậm màn trình diễn của anh ấy. –

+0

Đúng, bao gồm mười 300 tệp dòng chậm hơn một chút so với tệp 3000 dòng. Một lần nữa, sự khác biệt thực sự trong thời gian tường có lẽ là khá tầm thường. –

+1

Nhưng với tính năng tự động tải, có thể không cần phải tải mọi "phân lớp" cho mọi yêu cầu và đây cũng là lý do chính đáng để sử dụng APC –

1

Không, instantiating một lớp được tạo thành từ rất nhiều LOC, không tự động làm cho nó chậm.

Tức là, trừ khi bạn làm điều gì đó trong hàm tạo, nhưng sau đó nó phụ thuộc vào những gì bạn đang làm ở đó, và không lớn đến mức nào.

1

không, thực sự nó nhanh hơn việc tách nó thành nhiều tệp.

vấn đề duy nhất là thường dẫn đến một khối mã lớn và các sửa đổi khó thực hiện hơn.

CHỈNH SỬA: sẽ nhanh hơn nếu tất cả các dòng đều hữu ích.nếu bạn có rất nhiều mã cũ, bạn có thể xem xét dọn dẹp

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