2009-04-05 2 views

답변

1

그 중 하나를 모르지만 책 CLR via C#은 CLR의 작동 방식과 많은 시간과 리소스를 소모하는 방법에 대한 깊이 있고 관련성이 높은 지식을 제공합니다.

2

나는 그렇게 생각하지 않는다. 그리고 나는 업데이트 된 버전이 그렇게 많이 다를 것이라고 생각하지 않는다.

타이밍 수치는 테스트 머신이 아마도 더 새롭고 빨라질수록 다르지만 테스트 간의 관계는 거의 동일합니다.

이 기사는 일반적인 코드 작업의 저급 효과에 대한 기사이며, 작성한 Artice 이후로 많이 변경되지 않았습니다. 새로운 버전의 프레임 워크는 많은 기능을 추가했지만 모두 C# 1.0부터 사용할 수 있었던 기본 요소를 기반으로합니다.

16

아니요. 나는 그것을 결코 업데이트하지는 않았지만, 적절한 알갱이로 생각합니다. 기사의 일반적인 조언과 대부분의 엄지 손가락 규칙은 여전히 ​​잘 유지됩니다.

(즉,이 생성 된 코드는 어떻게 변경되었는지, 어떻게 변화 해 왔는지 원시 시간, 마이크로 프로세서가 변경 방식을 볼 수 오늘 실험을 반복하는 것이 재미있을 것이라고 말했다.) 대부분의 프리미티브의

상대 오버 헤드 원 많은 변화가 있었지만 일부는 극적으로 변했습니다. 예를 들어 정적이 아닌 대리자 호출의 평범한 성능이 크게 향상되었습니다 (.NET 2.0에서는 제대로 호출 한 경우). 나는 오늘날 실무자가 델리게이트 호출을 피하려고 자신의 길을 벗어날 것이라고 생각하지 않을 것입니다.

이후로 많은 컴파일 된 코드 시퀀스가 ​​변경 될 것으로 예상됩니다. 새로운 JIT 컴파일러 최적화 (마이크로 벤치 마크에서 잘 나타나지 않음)가있을 것입니다. JIT'd와 NGEN 코드의 다른 혼합 (그리고 NGEN은 나의 기사에서 탐구되지 않았다); 가비지 컬렉터와 같은 주요 하위 시스템은 수년 동안 지속적으로 조정되었습니다.

많은 개별적인 관리 코드 원시 연산의 비용을 없애기 위해 메모리 시스템 효과의 잠재적 가능성에 대해주의 깊게 조언합니다. 예를 들어, 03-04의 많은 CLR 성능 작업은 NGEN 시스템 어셈블리의 더러운 작업 페이지 (예 : 더러운 개인 페이지 최소화)로 나아갔습니다.

물론이 기사의 주제는 신중하고 철저하게 코드 성능을 측정하는 데 필수적이며 그 주제는 영원합니다.

그런데 필자는 항상 가장 많이 사용 된 .NET BCL 방법의 예상/표준 시간 및 공간 비용에 대한 후속 기사를 작성하고 싶었습니다. 우리가 .NET 성능에 대해 연구 한 공포 이야기. 그 결과 클래스 라이브러리/프레임 워크의 경험적 성능을 야생에서 실제 실무자가 실제로 사용한 것과 같은 특성에 대한 매우 흥미로운 생각이 생겼습니다 ...

감사의 말을 전하면서 ​​고마워합니다. .

p.s.

http://msdn.microsoft.com/en-us/magazine/cc500596.aspx

http://msdn.microsoft.com/en-us/magazine/cc507639.aspx

+1

나는 마이크로 프로세서도 변경 한 것을 추가해야합니다 : 당신이 내 기사를 즐길 경우 당신은이를 사랑합니다 - 나는 밴스 모리슨 이후이 주제에 좋은 두 부분 MSDN 시리즈를 쓴 참조하십시오. 물론 그들은 다중 스레드 및/또는 코어를 제공합니다. 또한 CPU 설계자는 OOP 및 JVM/CLR 응용 프로그램의 실행 흔적을 씹어 서 마이크로 아키텍처를 조정하고 조정할 수있었습니다. 예를 들어 가상 메소드 호출 및 짧은 메소드 호출/리턴의 컨텍스트에서 훨씬 더 나은 분기 예측을 사용하면 JIT가 최적화 할 수없는 일부 코드가 이제는 위험 요소, 롤백 또는 대기가 적게 실행될 수 있습니다. 일부 오버 헤드는 완전히 최적화되어 최적화됩니다. 이로 인해 마이크로 벤치 마크는 훨씬 더 문제가되고 위험합니다! –

+0

일부 마이크로 프로세서는 반대 방향으로 움직이기 시작했지만 더 많은 순서로 쓰이기 시작했고 리터럴 레지스터 (예 : PPC, Larabee)를 사용하기 시작했습니다. 많은 파이프 라인 처벌이 더욱 고통 스럽습니다. – Crashworks

+0

사실입니다! 나는 계산의 에너지 효율의 추세가 계속해서 모멘텀을 얻고 있다고 생각한다. (병렬화 된 '처리량 소프트웨어'가 더 경제적으로 흥미로워진다는 가정하에) 더 간단한 마이크로 아키텍처를 보게 될 것이다. 이기종 칩 - 멀티 프로세서에서 복잡하고 단순한 혼합이 가능합니다. 흥미롭게도 하드웨어 진자가 되돌아 오면 VM 코드 건 및 조직의 변경 사항에 시간이 반영 될 수 있습니다! 소프트웨어 모양 하드웨어 및 그 반대. –