Độ phức tạp lớn của lệnh chuyển đổi không thực sự là điểm quan trọng. Ký hiệu Big-O đề cập đến hiệu suất khi n tăng theo hướng vô cùng. Nếu bạn có một tuyên bố chuyển đổi đủ lớn mà hiệu suất tiệm cận là một vấn đề thì nó quá lớn và nên được tái cấu trúc.
Ngoài vấn đề về khả năng đọc, trong Java và C# Tôi nghĩ bạn sẽ sớm đạt được một số giới hạn nội bộ cho kích thước tối đa của một phương thức.
Đối với các câu lệnh chuyển đổi tương đối nhỏ được gọi thường xuyên, có lẽ sẽ có nhiều thông tin hơn để đo lường hiệu suất thực tế của câu lệnh chuyển đổi so với các cách tiếp cận khác mà bạn có thể sử dụng thay thế. Phép đo này có thể được thực hiện bằng cách lặp lại thực hiện thao tác trong một vòng lặp.
Để có báo cáo chuyển đổi lớn hơn, tôi khuyên bạn nên tái cấu trúc để sử dụng từ điển hoặc cấu trúc dữ liệu tương tự có khoảng O (1) hiệu suất thậm chí có n rất lớn và nó sẽ không gặp sự cố với kích thước phương thức có giới hạn.
Nguồn
2010-12-14 18:37:41
Câu trả lời không chỉ là ngôn ngữ cụ thể, thậm chí không phải là trình biên dịch cụ thể. Nó phụ thuộc vào mã thực tế. Một số câu lệnh switch được chuyển thành các bảng nhảy bởi một số trình biên dịch. –
Ở thái cực khác, các giá trị có thể khiến các chức năng khác được gọi. Trong Ruby, ví dụ, các giá trị được kiểm tra bằng toán tử '===', có thể làm bất cứ điều gì. Một cách sử dụng phổ biến của điều này là biểu thức thông thường, trong đó (trong một số trường hợp) có thể rất tốn kém - vì vậy chi phí chuyển đổi bị chi phối bởi chính các giá trị, chứ không phải bởi số lượng có. – Ken
Có tình huống nào có thể lớn hơn * so với O (n) (đối với các trường hợp * n * trong chuyển đổi) không? – FrustratedWithFormsDesigner