2012-07-30 4 views
0

IronRuby에서 발견되어 매우 재미 있다고 생각했습니다. 그것을 시도하기로 결정했다.IronRuby가로드되는 데 시간이 오래 걸립니다. 이게 정상인가?

내가 배포하고 싶은 루비 스크립트가 있습니다. 그러나 내 청중은 시스템에 루비가 설치되어 있거나 설치되어 있지 않을 수도 있지만 .net을 가지고 있기 때문에 철 루비 dll과 함께 C# GUI를 번들로 작성하여 루비 스크립트를 실행할 수 있습니다. 루비를 설치해야합니다. 그리고 C#에서 GUI를 만들 수도 있습니다.

그래서 나는 단순히

ScriptEngine engine = Ruby.CreateEngine(); 
engine.ExecuteFile("hello_world.rb"); 

hello_world.rb
몇 초 후에 그것을

3.times { p 'hello' } 

가 그럼 난 내 응용 프로그램 실행 및 대기하게 한 줄을 ... 포함 된 파일을 실행하여 테스트하기로 결정 콘솔에 hello을 3 번 인쇄했습니다.

루비 엔진이 오랜 시간이 걸릴 것으로 예상됩니까? 나는 엔진을 시작한 다음 프로그램 기간 동안 엔진을 작동 상태로 둘 수 있다고 생각하지만 시작하기를 기다리지 않고 지루할 수 있습니다.

이 차이를 (I 1.1을 시도하지 않은하지만 내가 사용하지 않는 .NET 4 광고거야)

답변

1

그것은 아마 단지를의 취하면 나는 .NET 2.0을 위해 만들어진 아이언 루비 1.0를 사용하고 있습니다 JIT는 처음부터 모든 것을 컴파일합니다. 이것을 테스트하려면 hello world 바로 다음에 다른 스크립트를 실행하십시오. 즉, 콘솔에 즉시 인쇄해야합니다.

+0

네, 맞습니다. 나머지 스크립트는 첫 번째 스크립트가 실행 된 직후에 실행되었습니다. 로드 시간을 줄이는 방법이 있습니까? 나는 항상 내가 생각한주의 집중을 분산시키기 위해 귀여운 애니메이션을 던질 수 있었다. – MxyL

+0

응용 프로그램을 처음로드 할 때 빈 스크립트 (또는 단일 작업을 수행하는 스크립트)를 실행하여 응용 프로그램을 시작하기 전에 JIT를 컴파일하여 전체를 컴파일 해 볼 수 있습니다. (GUI를 시작할 때 다른 스레드를 스핀 오프 할 수 있고로드가 끝날 때까지 "실행"버튼을 회색으로 표시 할 수 있습니다. 너무 길면 일부 "로드 IronRuby"텍스트가 유용 할 수 있습니다.) –

+0

좋은 해결책과 같은 소리입니다. 사용자는 아마도 앱을 시작한 다음 곧바로 루비 스크립트를 실행하려고하지 않을 것입니다. – MxyL

관련 문제