제 질문은 예제로 만드는 것이 가장 좋습니다.상수가 문자열 매개 변수가 사용되지 못하게하면 옵티마이 저가 문자열 매개 변수 생성을 금지합니까?
public static boolean DEBUG = false;
public void debugLog(String tag, String message) {
if (DEBUG)
Log.d(tag, message);
}
public void randomMethod() {
debugLog("tag string", "message string"); //Example A
debugLog("tag string", Integer.toString(1));//Example B
debugLog("tag string", generateString());//Example C
}
public String generateString() {
return "this string";
}
내 질문에 예, A, B 또는 C의 - 문자열부터 최적화를 제거 할 궁극적으로 사용되지 않을 것이다?
다른 방법으로 묻는다면, 다음을 수행하여 문자열 개체가 생성되지 않도록 할 수 있습니까? 이 첫 번째 단편 제거되지 같이
public void randomMethod() {
if (DEBUG) debugLog("tag string", "message string"); //Example A
if (DEBUG) debugLog("tag string", Integer.toString(1));//Example B
if (DEBUG) debugLog("tag string", generateString());//Example C
}
옵티마이 저는 (오른쪽에 쓰여진 경우)이를 제거해야합니다. –
실제로 A와 C의 문자열은 리터럴이므로 내부적으로 처리되지 않으므로 어느 쪽의 문자열도 생성되지 않습니다. 그러나 그 질문에 대해서는 중요하지 않습니다. 나는 당신이 의미하는 바를 얻습니다. – delnan
@JesusRamos 컴파일러 작가는 정확성과 실용성에 관해 당신과 함께 작업하고 싶습니다 – delnan