Tôi đã đọc trong CLR qua C# của Jeffrey Richter rằng String.ToUpperInvariant()
nhanh hơn String.ToLowerInvariant()
. Ông nói rằng điều này là do FCL sử dụng ToUpperInvariant để chuẩn hóa các chuỗi, vì vậy phương pháp này được tối ưu hóa cực kỳ. Chạy một vài bài kiểm tra nhanh trên máy của tôi, tôi đồng ý rằng ToUpperInvariant()
thực sự nhanh hơn một chút.Tại sao ToUpperInvariant() nhanh hơn ToLowerInvariant()?
Câu hỏi của tôi là nếu có ai biết cách chức năng thực sự được tối ưu hóa ở cấp độ kỹ thuật và/hoặc lý do tại sao cùng một tối ưu hóa cũng không được áp dụng cho ToLowerInvariant()
.
Liên quan đến việc "nhân đôi": Các "sao chép" Câu hỏi đề xuất thực sự không cung cấp một câu trả lời cho câu hỏi của tôi. Tôi hiểu lợi ích của việc sử dụng ToUpperInvariant
thay vì ToLowerInvariant
, nhưng những gì tôi muốn biết là tại sao/tại sao ToUpperInvariant
hoạt động tốt hơn. Điểm này không được giải quyết trong "trùng lặp".
Có vẻ như công việc cho ildasm thân thiện của bạn hoặc trình giải mã ưa thích. – Romoku
http://stackoverflow.com/questions/2801508/what-is-wrong-with-tolowerinvariant – Dennisch
Cả hai 'ToUpperInvariant()' và 'ToLowerInvariant()' kết thúc gọi 'InternalChangeCaseString()', do đó, ma thuật phải là một số tối ưu hóa trong (hoặc trong phương thức được gọi bởi) phương thức đó. –