고객을 위해 기술 지원을 할 때는 종종 많은 고객의 이상이 전혀 없습니다. 이러한 이상을 제거한 후, 코드 실행 속도는 이전에 비해 크게 향상되었습니다. 이를 통해 코드에서 이상을 사용하면 상당한 성능이 오버 헤드를 가져올 것이라고 추측 할 수 있습니다. 이상은 잘못된 상황에서 중요한 부분이기 때문에 포기가 불가능하므로 실험을 통해 비정상적인 치료가 비정상적인 치료의 영향을 볼 수 있습니다.
실험
내 실험은 무작위로 던지는 간단한 간단한 코드를 기반으로합니다. 과학적 관점에서 볼 때 이것은 완전히 정확한 측정이 아니며 동시에 실행중인 코드에서 작동 코드를 수행하는 방법을 모르겠습니다. 그러나 어쨌든이 코드는 몇 가지 기본 상황을 이해할 수 있어야합니다.
결과는 매우 흥미 롭습니다. 던지기 비용과 비정상을 포착하는 비용은 매우 낮은 것 같습니다. 내 예에서는 약 0.02 밀리 초입니다. 당신이 실제로 너무 많은 이상을 던지지 않는 한 (우리는 10 만 명 이상을 의미합니다), 이것은 기본적으로 무시됩니다. 이러한 결과는 비정상적인 처리 자체가 코드 성능에 영향을 미치지 않는다는 것을 보여 주지만, 다음과 같은 문제를 해결하지 못했습니다. 성능에 큰 영향을 미치는 사람은 누구입니까?
나는 분명히 중요한 문제를 놓쳤다.
그것에 대해 다시 생각한 후, 나는 비정상적인 치료의 중요한 부분을 놓쳤다는 것을 깨달았습니다. 이상이 일어 났을 때 당신이 한 일을 고려하지 않았습니다. 대부분의 경우 당신은 단지 이상을 포착하는 것이 아닙니다! 문제는 다음과 같습니다. 일반적으로 문제를 보충하려고 시도하고 응용 프로그램이 최종 사용자와 함께 플레이하도록합니다. 그래서 내가 놓친 것은 "" "" "보충 코드" "는 이상을 처리합니다. 다른 코드에 따라 성능 손실이 상당히 중요해질 수 있습니다. 경우에 따라 이는 서버에 대한 연결에 초점을 맞추는 것을 의미 할 수 있으며 다른 경우에는 기본 롤백 솔루션을 사용하는 것을 의미 할 수 있으며이 솔루션에서 제공하는 솔루션은 매우 나쁜 성능을 가져올 수 있습니다. 이것은 많은 경우에 우리가 보는 행동에 대한 좋은 설명을 제공하는 것 같습니다.
그러나 나는 분석이 여기에 있다고 생각하지는 않지만 다른 것이 여기에서 놓친 것이라고 생각합니다.
스택 추적
나는 여전히이 문제에 대해 궁금하며, 이런 이유로 Strack 추적을 수집 할 때 성능이 어떻게 변하는 지 모니터링했습니다.
이것은 종종 발생하는 경우입니다. 비정상과 스택 궤적을 기록하려면 문제가 어디에 있는지 알아보십시오.
이러한 이유로 코드를 수정하고 비정상적인 스트라크 트레이스를 수집했습니다. 이것은 상황이 크게 바뀌 었습니다. 비정상적인 스트라크 트레이스 수집에 대한 성능 효과는 단순히 비정상을 포착하고 던지는 것보다 10 배 높습니다. 따라서 Strack Trace는 문제가 발생하는 위치를 이해하는 데 도움이되지만 (문제가 발생하는지 이해하는 데 도움이 될 수 있음) 성능 손실이 있습니다. 우리는 Strack 흔적에 대해 이야기하지 않기 때문에 여기의 영향은 종종 매우 큽니다. 대부분의 경우, 우리는 여러 수준에서 이상을 던지고 포착해야합니다. 간단한 예를 살펴 보겠습니다. 웹 서비스 클라이언트가 서버에 연결되어 있습니다. 우선, Java 라이브러리 수준에는 이상이 있습니다. 그 이후로 프레임 워크 수준에는 비정상적인 클라이언트가있을 것이며 향후 애플리케이션 수준에서 비정상적인 비즈니스 로직 호출이있을 수 있습니다. 지금까지 총 3 개의 Strack 흔적을 수집해야합니다. 대부분의 경우 로그 파일 또는 응용 프로그램 출력에서 이러한 Strack 추적을 볼 수 있으며 이러한 긴 Strack 추적을 작성하는 경우 종종 성능 효과도 있습니다.
결론적으로
우선, 성능의 영향으로 인해 비정상적인 이상을 폐기하는 것은 좋지 않습니다. 비정상적인 것은 작동 문제를 해결하고 깨끗한 코드를 작성하는 데 일관된 방법을 제공하는 데 도움이됩니다. 그러나 우리는 코드에 던져진 비정상적인 양을 추적해야하며, 이는 상당한 성능 효과를 유발할 수 있습니다. 따라서 ONEAPM은 기본적으로 발생하는 이상을 추적해야합니다. 많은 경우에 사람들은 이러한 이상을 해결할 때 코드의 이상과 성능 손실에 놀랄 것입니다. 둘째, 사용하는 것이 매우 유익하지만 Strack 추적을 너무 많이 캡처하지 않아야합니다. 이상은 비정상적인 조건을 위해 설계되어야하며,이 원칙을 사용할 때 명심해야합니다. 물론, 좋은 프로그래밍 습관을 따르고 싶지 않은 경우, Java 언어는 그렇게하면 프로그램을 더 빨리 실행하고 그렇게하도록 격려 할 수 있음을 알려줄 것입니다.
위는이 기사의 모든 내용입니다.