문제

IronpyThon은 IronRuby가 Ruby의 구현이고 F#은 OCAML과 마찬가지로 .NET 플랫폼에서 Python의 구현이라는 것을 알고 있습니다.

내가 이해할 수없는 것은이 언어가 "조상"에 더 가깝게 성능을 발휘하는지 또는 속도 측면에서 C#과 더 가깝게 성능을 발휘하는지 여부입니다. 예를 들어, Ironpython은 어떻게 든 C#에서 사용하는 것과 동일한 바이트 코드로 "컴파일"하므로 빠르게 실행됩니까?

도움이 되었습니까?

해결책

Ironpython과 Ironruby는 DLR (Dynamic Language Runtime) 위에 구축되었으며 CIL (.NET에서 사용하는 바이트 코드)에 따라 즉시 컴파일됩니다. 그들은 C#보다 느리지 만 Faaaaaaar는 비.NET보다 빠릅니다. 내 지식에는 괜찮은 벤치 마크가 없지만 차이점을 볼 수 있습니다.

다른 팁

Ironpython은 실제로 가장 빠른 파이썬 구현입니다. "Fast"에 대한 일부 정의의 경우, 적어도 CLR의 시작 오버 헤드는 다음과 같습니다. 거대한 Cpython과 비교할 때. 또한 Compiler Ironpython 최적화는 코드가 여러 번 실행될 때만 의미가 있습니다.

Ironruby는 Ironpython을 빠르게 만드는 많은 흥미로운 기능이 Dynamic Language Runtime으로 추출 되었기 때문에 Ironpython과 Ironruby (및 관리 된 JavaScript, Dynamic VB, Ironscheme, Vistasmalltalk 등)로 추출 되었기 때문에 Ironpython이 빠른 잠재력을 가지고 있습니다. 지어졌습니다.

일반적으로 언어 구현 속도는 실제 언어 기능과 거의 독립적이며, 그에 들어가는 엔지니어링 인간의 수에 더 의존합니다. IOW : Dynamic vs. Static은 중요하지 않습니다. 돈은 그렇습니다.

예를 들어, Common LISP는 Ruby 또는 Python보다 훨씬 역동적 인 언어이지만 C에 돈을 줄 수있는 일반적인 LISP 컴파일러가 있습니다. 좋은 SmallTalk 구현은 Java만큼 빠르게 실행됩니다 (주요 JVM, Sun Hotspot 및 IBM J9가 실제로 약간 수정 된 SmallTalk VMS) 또는 C ++이므로 놀라운 일이 아닙니다. 지난 6 개월 만에 주요 JavaScript 구현 (Mozilla Tracemonkey, Apple Squirrelfish Extreme 및 The New Kid on the Block)이 만들어졌습니다. 거대한 최적화되지 않은 C와 함께 JavaScript Head-to-Head를 가져 오기 위해 성능 향상, 10 배 이상

현재 Ironruby는 대부분의 경우 매우 느립니다. 일부 지역에서는 더 빠르지 만 MRI (Matz 'Ruby 구현)보다 확실히 느립니다.

Ironruby는 훨씬 빠를 가능성이 있지만 속도 측면에서 C#에 가까워 질 것이라고 의심합니다. 대부분의 경우 중요하지 않습니다. 예를 들어 데이터베이스 호출은 웹 요청의 전체 지속 시간의 90%를 구성 할 수 있습니다.

나는 팀이 성능이 아니라 언어 완성을 위해 갈 것이라고 생각합니다. 이렇게하면 1.0으로 배송되면 Ironruby를 실행하고 대부분의 루비 프로그램을 운영 할 수 있습니다.

Ironpython도 비슷한 이야기를 가지고 있다고 생각합니다.

최신 .NET 구현의 성능이 조상과 C#사이에 있다고 가정함으로써 올바른 아이디어를 얻었습니다. 그 이유는 C#이 .NET 자체와 매우 밀접하게 일치하기 때문입니다.

C#과 OCAML은 유사한 성능 특성 자체를 갖기 때문에 F#는 쉬운 일이 아닙니다.

Python과 C#이 성능 특성이 크게 다르기 때문에 Ironpython은 훨씬 어렵습니다. 실제로, 답은 Ironpython 구현 자체에 따라 달라지며, 이는 비효율적 인 Python 스타일 평가를 가능할 때마다 효율적인 C#스타일 평가로 변환하기 위해 노력할 것입니다. Ironpython은 일반적으로 C#보다 훨씬 느리게 될 것으로 예상됩니다. 이 효과를 볼 수 있습니다 여기.

건배, Jon Harrop.

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