나는 이것을 최적화하기 위해 일부 코드에서 이것을 발견했습니다. 여기 는 snipet입니다 : 정상적인 Java 정규식 동작입니까?
tempString = bigBuffer.replaceAll("\\n", "");
tempString = tempString.replaceAll("\\t", "");
가 그럼 난 현명하게 정규식을 사용하기로 결정 난 이런 짓을 :
친구가 대신이 일을 나에게 말했다 그런
tempString = bigBuffer.replaceAll("[\\n\\t]", "");
:
tempString = bigBuffer.replaceAll("\\n|\\t", "");
필자가 변경 한 결과를 알고 싶기 때문에 필자는 그것이 좋은 최적화인지 확인하기위한 테스트를 수행했다. 따라서 (Java 버전 "1.6.0_27")의 결과는 첫 번째 코드가 참조 100 % 인 것입니다.
파이프를 사용하면 121 %이므로 작업 수행에 더 많은 시간이 걸립니다.
대괄호로 52 %이므로 작업을 수행하는 데 소요되는 시간이 적습니다.
정규 표현식이 동일해야하는 곳에서 정규 표현식이 다르게 작동하는 이유는 무엇입니까?
마틴
왜 동일해야합니까? – BoltClock
같은 일을하기 때문에 그것이 같아야한다고 생각합니다. 파이프가 단일 문자와 함께 사용될 때 컴파일러에 최적화가 필요할 수도 있습니다. – Martin