Tôi phát hiện ra rằng Java supports constant folding of primitive types, nhưng còn khoảng String
thì sao?Trình biên dịch Java có bao gồm String Constant Folding không?
Ví dụ
Nếu tôi tạo ra các mã nguồn sau
out.write(""
+ "<markup>"
+ "<nested>"
+ "Easier to read if it is split into multiple lines"
+ "</nested>"
+ "</markup>"
+ "");
gì đi vào mã biên dịch?
Phiên bản kết hợp? out.write("<markup><nested>Easier to read if it is split into multiple lines</nested></markup>");
Hoặc phiên bản nối thời gian chạy ít hiệu quả hơn? out.write(new StringBuilder("").append("<markup>").append("<nested>").append("Easier to read if it is split into multiple lines").append("</nested>").append("</markup>").append(""));
Ghép chuỗi nhanh hơn khoảng 100 lần so với ghi vào thiết bị. Nó thực sự sẽ không quan trọng nhiều nếu nó không (nhưng nó không) –
Tôi chỉ cần thử nghiệm nó trên máy tính xách tay của tôi và chậm hơn 50 lần của nó. –
Đó thực sự là hành vi mà JLS yêu cầu./Bạn có thể thấy mã được tạo bằng 'javap -c'. –