Tôi tìm thấy điều này trong một số mã mà tôi muốn tối ưu hóa. Đây là snipet:Đó có phải là hành vi regex Java bình thường không?
tempString = bigBuffer.replaceAll("\\n", "");
tempString = tempString.replaceAll("\\t", "");
Sau đó, tôi quyết định sử dụng regex một cách khôn ngoan và tôi đã làm điều này:
tempString = bigBuffer.replaceAll("[\\n\\t]", "");
Sau đó, một người bạn nói với tôi để làm điều này thay vì:
tempString = bigBuffer.replaceAll("\\n|\\t", "");
Vì tôi muốn biết kết quả của những thay đổi của mình nên tôi đã làm một bài kiểm tra để xác minh xem đó có phải là một tối ưu hóa tốt hay không. Vì vậy, kết quả với (phiên bản java "1.6.0_27") là với mã đầu tiên là tham chiếu 100%.
Với đường ống là 121% nên mất nhiều thời gian hơn để thực hiện tác vụ.
Với khung hình vuông là 52% nên mất ít thời gian hơn để thực hiện tác vụ.
Tại sao regex lại hoạt động khác nhau khi nó giống nhau?
Martin
Tại sao nó giống nhau? – BoltClock
Tôi tin rằng nó sẽ giống nhau bởi vì nó làm điều tương tự. Có lẽ trình biên dịch cần tối ưu hóa khi đường ống được sử dụng với ký tự đơn. – Martin