Tôi đã chơi xung quanh w/mẫu đặc tả để xử lý và chứa logic nghiệp vụ trong ứng dụng C#/mvc của chúng tôi. Càng xa càng tốt. Mặc dù vậy, tôi có một câu hỏi - vì chúng ta sẽ tạo một số đối tượng đặc tả trên heap, điều đó có ảnh hưởng đến hiệu năng theo bất kỳ cách nào hay không, nói cách tạo các phương thức trợ giúp để xử lý logic nghiệp vụ? Cảm ơn!Đặc điểm kỹ thuật Mẫu và hiệu suất
Trả lời
Tôi có một câu hỏi - vì chúng tôi sẽ tạo một số đối tượng đặc tả trên heap, điều đó có ảnh hưởng đến hiệu suất theo bất kỳ cách nào hay không, nói phương pháp trợ giúp để xử lý logic nghiệp vụ?
Tất nhiên nó sẽ ảnh hưởng đến hiệu suất, mọi dòng mã bạn viết và lựa chọn thiết kế bạn thực hiện sẽ ảnh hưởng đến hiệu suất theo cách này hay cách khác. Điều này dường như không có ý nghĩa, là một nút cổ chai trong ứng dụng của bạn hoặc đáng được quan tâm vì điều này gần như chắc chắn là một trường hợp tối ưu hóa sớm. Những ngày này, bạn chỉ nên tập trung vào việc mô hình hóa tên miền của mình một cách chính xác và viết mã cực kỳ rõ ràng và có thể bảo trì. Tập trung nhiều hơn vào năng suất của nhà phát triển hơn là năng suất máy. Chu kỳ CPU là rẻ, và trong nguồn cung cấp gần như vô hạn. Chu kỳ phát triển không phải là rẻ, và không phải là vô hạn trong cung cấp.
Nhưng chỉ bạn mới có thể biết liệu điều đó có ảnh hưởng đến việc sử dụng ứng dụng thực tế của bạn trên dữ liệu trong thế giới thực bằng cách lược tả hay không. Chúng tôi không biết, vì chúng tôi không biết tên miền của bạn, không biết người dùng của bạn, không biết bạn mong đợi hiệu suất gì, v.v. Và ngay cả khi chúng tôi biết những điều đó, chúng tôi vẫn không thể t cung cấp cho bạn mạnh mẽ của một câu trả lời như bạn có thể cho mình bằng cách bụi một profiler ra khỏi kệ và nhìn thấy những gì ứng dụng của bạn thực sự làm.
Cảm ơn và vâng tôi đồng ý với ý kiến của bạn về nhiều yếu tố đi vào hiệu suất. Vì tôi đang cố gắng chứa logic kinh doanh của chúng tôi, tôi thấy mẫu đặc tả hữu ích (logic kinh doanh có giá trị, dễ kiểm thử đơn vị), tuy nhiên khách hàng tiềm năng của chúng tôi không bị thuyết phục và cảm thấy kết quả tương tự có thể đạt được với mã ít hơn và ít đối tượng sử dụng trợ giúp hơn phương pháp. – rh1200
kể từ khi chúng ta sẽ tạo một số đối tượng đặc điểm kỹ thuật trên heap, mà sẽ ảnh hưởng đến hiệu suất trong bất kỳ cách nào
Hầu hết các mẫu thiết kế đánh đổi một số chi phí cho sạch sẽ thiết kế - điều này cũng không ngoại lệ . Nói chung, số lượng bộ nhớ mà các chi tiết kỹ thuật thêm là rất tối thiểu (thường là một vài tài liệu tham khảo, và đó là nó). Ngoài ra, họ có xu hướng thêm một vài cuộc gọi phương thức bổ sung so với logic tùy chỉnh.
Điều đó đang được nói, tôi sẽ không cố gắng tối ưu hóa sớm điều này. Các chi phí ở đây là vô cùng nhỏ, vì vậy tôi sẽ rất nghi ngờ nó sẽ được chú ý trong bất kỳ ứng dụng thế giới thực.
Mối quan tâm có nên được lồng tiếng trong quá trình truyền tải thông qua các thông số kỹ thuật có thể trên heap theo bất kỳ thứ tự nào và trong bất kỳ số nào không? – RBZ
Phân bổ đống không phải là điều đáng sợ trong .NET, như a) đống nén có nghĩa là phân bổ nói chung khá rẻ và b) thu gom rác có nghĩa là phân bổ heap ít rủi ro hơn (vì bạn không phải theo dõi đối tượng suốt đời cẩn thận.) –