2009-06-20 5 views
0

, 그것은 프로그램의 선택처럼 보인다 수 있습니다Silverlight 2에서 DLR 언어와 C#의 속도 차이는 무엇입니까? 실버 라이트 2의

  • C#
  • VB
  • DLR 스크립트 언어
    • 아이언 루비
    • IronPython의
    • 슬프게도 취소하지 않을 경우 (무시) 관리되는 jScript

자국어 (C# 및 VB)가 DLR 언어보다 몇 배 더 빠르지 않은 경우입니까?

Silverlight 클라이언트 프로그래밍을 할 때 IronPython에서 "살아"싶습니다. 아니면 프로세서 집약적 인 작업을 위해 C#으로 전환해야합니까?

내 언어 설문은 this set of examples for C# and VBthis page discussing the DLR에서 제공됩니다.

답변

11

불행히도이 질문에 대한 답변은 어렵지 않습니다. 동일한 언어의 성능은 많은 매개 변수에 따라 크게 다릅니다.

예, 일반 VB.Net 및 C#은 DLR 기반 언어보다 빠릅니다. 정적 언어는 메서드 바인딩과 같은 컴파일 타임에 더 많은 작업을 수행합니다. 이러한 유형의 작업은 DLR 기반 언어의 런타임시 수행해야하므로 런타임시 비용이 약간 더 들게됩니다.

그러나 많은 작업이 DLR 및 DLR 기반 언어를 최적화하는 데 사용됩니다. 이 작업의 대부분은 다양한 캐시 등으로 완화됩니다. 많은 유형의 응용 프로그램에서 성능 차이는 무시할 수 없을 것입니다.

프로파일 러가 실제로 문제가 있다고하지 않는 한 성능 만 기반으로하는 DLR 기반 언어를 제외하지 않겠습니다.

+0

모든 것이 합리적입니다. IronPython을 사용하는 사람들이 예상보다 많은 C#을 작성하고 있는지 궁금합니다. – Nosredna

3

일반적으로 알고리즘을 최적화하면 정적 언어로 다시 작성하는 것보다 훨씬 더 큰 효과가 있습니다.

.NET Rocks Show #429, Michael Foord와의 인터뷰에 관심이있을 수 있습니다. 여기에 transcript에서 관련 발췌입니다 :

동적 언어 시험에 훨씬 쉽게, 그들은 정말 개발자가 시간에 복용되었다는 테스트 주도 개발 방식에 적합 다시 '. 하지만 나는 성능상의 이유로을 C#으로 다시 작성하고 3 년 후 몇 년 후 우리는 에 IronPython 코드 40,000 줄을 가지고 있다고 가정했는데, 약 140 개가 있습니다. 테스트 코드의 000 라인, 우리는 약 300 C 번호의 라인과 그들이 작동하지 않는 것을 에게, 성능에 그들이 올 때마다 찾아 와서 작업을 찾을 말했다 마다의 몇 가지 유형을 가지고 충분히 빠른 우리는 알고리즘을 개선하여 Python 코드를 향상시키고 C#, 에 빠질 필요가 없으며 프로그램 실행 속도가 느린 이유는 일반적으로 언어의 결함이 아닌 속도를 얻을 수있었습니다. 프로그래머의 잘못은 개발자 입니다.

+0

그 수염 뒤에 숨어있는 IronPython에 관한 많은 지식 --p –

1

또한 부 (Boo)를 사용할 수 있습니다. 여기에 샘플이 있습니다 Silverlight Tetris with boo

+0

Silverlight에서는 _all_CLR 언어가 작동합니까? – Nosredna

+0

Silverlight CLR (2.0.5.0)은 일반 CLR (2.0.0.0)과 약간 다르지만 일반적으로 대부분의 언어는 지금까지 모두 컴파일해야합니다. – dahlbyk

+0

좋습니다. 그걸 몰랐어. – Nosredna