문제

나는이 질문이 있는지 여부를 묻는 것을 보았다 글로벌은 나쁘다.

내가 그것의 파급 효과에 대해 생각했듯이, 어떤 경우에 필요한 경우, 성능의 이유로 필요한 유일한 주장은 내가 생각할 수있는 유일한 주장입니다.

그러나 나는 그것에 대해 확실하지 않습니다. 그래서 내 질문은 Get/Set 메소드 호출을 사용하는 것보다 전역을 사용하는 것이 더 빠를 것입니까?

도움이 되었습니까?

해결책

더 적절한 비교는 글로벌에 액세스하는 것입니다. (정적) 그리고 현지.

실제로 로컬에 액세스하려면 가변 오프셋을 스택 포인터의 값에 추가해야하기 때문에 글로벌이 더 빠릅니다.

그러나 당신은 결코 결코 항상 이것에 대해 걱정해야합니다. 코드를 읽을 수 있고, 쓰기 쉽고, 작동하는 것과 같이 중요한 것들에 집중하십시오.

다른 팁

좋은 최신 컴파일러는 아마도 차이가 없도록 Get/Set 메소드 호출을 인라인해야합니다.

거의 모든 경우에 정적/글로벌이 성능의 영향보다 두통을 일으킬 지 여부에 대해 걱정하는 것이 훨씬 더 중요합니다. 어쨌든 거의 감지 할 수 없습니다.

어셈블러에 글을 쓰면 더 많은 성능을 얻을 수 있습니다. 또한 코드를 디버깅하는 데 더 많은 시간을 잃습니다.

정확히 같은 유형의 거래입니다.

약간 더 빠르지 만 속도가 크지 않을 수도 있습니다. Getter와 Setter 기능이있는 글로벌은 모든 것에 대한 응용 프로그램 크기를 유지합니다. 이러한 유형의 크기 절약이 응용 프로그램에 유리한 지 여부는 타겟팅하는 플랫폼과 관련이 있습니다. 예를 들어, 임베디드 애플리케이션, 메모리가 제한된 플랫폼을 개발할 때는 실행 가능한 솔루션이 될 수 있습니다.

CPU와 컴파일러에 따라 다릅니다. 최소한 하나의 인기있는 PPC 칩셋에서, 글로벌 변수를로드하려면 16 비트 상대 오프셋으로 인코딩 할 수 없기 때문에 추가 지침이 필요합니다.

또한 캐시 지역에 거대한 쓰레기가 필요하거나 별명이없는 최적화를 파괴 할 수 있습니다. 글로벌이 성능을 높일 수 있다고 가정하면 다소 순진합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top