방금 writing efficient code in J2ME에 대한 BlackBerry 문서의 기사를 읽었습니다.비 최종 정적 문자열은 정적 최종 문자열보다 효율적입니까?
이 기사에는 "문자열에 정적 변수 사용"을 권장하는 섹션이 있습니다. 그 이유는 컴파일러가 static final
참조를 문자열 리터럴로 인라인하기 때문에 비 최종으로 두는 것이 좋습니다 (정적 참조를 검색하는 것이 문자열 풀에서 검색하는 것보다 낫다고 가정합니다).
모든 JVM에 해당합니까? 마지막 직장에서의 사장님이 우리 머리에 우리를 항상 두 드리려했습니다. 항상 우리 상수에 static final
을 사용하십시오. 우리는 자바로 임베디드 프로그래밍을하고 있었기 때문에 그는 성능면에서 정말 고수했습니다 (비록이 경우 메모리 나 속도에 더 관심이 있는지는 잘 모르겠지만). 나의 상사는 수년간 Java를 해왔으며 실제로 그의 물건을 알고 있기 때문에 그의 조언을 받았다. 지금 나는 모순 된 충고를 받고있다!
그럼 어느 것이 더 낫습니까? 메모리 보존 관점 또는 속도 관점에서, J2ME 또는 J2SE에서 응답 할 수 있습니다.
static final을 사용해야합니다. 기계가 무언가가 인라인되어야 하는지를 결정하기 위해 기계가하도록하십시오. 또한 문자열을 인라인하는 것보다 코드를 인라인하는 것이 좋을지 모르겠다면 자바가 제대로 작동하지 않을 수도 있습니다. – Falmarri
Android 또는 BlackBerry 용 UI를 프로그래밍 할 때 언어를 선택할 필요가 없습니다. . 그러나 그 너머에 무엇이 진행되고 있는지 알면 더 좋습니다! 자, 이건 원칙의 문제 야! 당신은 기계에 복종하지 않고 기계가 당신에게 복종합니다! 또한, 왜 이것이 논평이 아닌 대답입니까? –
안드로이드와 같은 선택의 여지가 없지만 문자열을 인라이닝하는 것은 병목 현상이 아니라 다른 백그라운드에서 실행되는 60 가지 응용 프로그램이라는 것입니다. 또한 후드 아래에서 무슨 일이 벌어지고 있는지 알면 좋겠지 만 자바와 같은 언어를 사용하면 원하는 코드로 가상 머신이 할 수 있기 때문에 실제로는 할 수 없습니다. – Falmarri