2010-05-19 4 views
8

내 응용 프로그램에 .NET 4.0 클라이언트 프로파일을 사용하고 있으며 4GB RAM과 빠른 하드 디스크가있는 이중 코어를 실행합니다.110kb .NET 4.0 앱은 콜드 스타트를 위해 10 초를 필요로합니다.

wpf listview에 일반 목록을 표시하는 것만 큼 크게 시작할 필요가 없습니다.

내 어셈블리에서 콜드 스타트를 더 빨리 수행하려면 어떻게해야합니까?

나는 이제 다시 콜드 스타트를 실행하고 내 \ obj \ x86 \ Debug 폴더에서 windowsapplication.exe를 실행하고 내 하드 디스크는 지옥처럼 실행되며 10,5 초가 걸렸습니다 ???

무엇이 잘못 되었나요?

차가운 후 웜 스타트가 1 초 걸렸습니다.

내 ViewModels을 만들 때 데이터를 읽을 수있는 모든 방법을 제거 :

자바 6 애플리케이션은 전혀 단지 비교할 수없는 그 문제 ...

UPDATE 있습니다.

아직 10 초가 표시됩니다. RAM에서 데이터를 읽는 문제는 아닙니다. 문제는 .net 4.0 wpf 응용 프로그램을 실행하는 것 외에는 큰 소리로 한 번도 읽지 못했던 하드 디스크입니다 ...

제 3 자 dll은 어떤 것도 언급하지 않습니다.

이들은 I 참조하는 어셈블리 같습니다

Microsoft.CSharp가 Presentation.Core PresentationFramework 시스템 System.Core System.Data System.Xaml 에서 System.Xml System.Xml.Ling WindowsBase

업데이트 2 :

난 그냥 빈 창 및 녹색 배경 ;-)

콜드 스타트 ​​나는 내 다른 WPF를 실행하십시오 (하드 디스크가 매우 바 빠졌다)

3 초 걸렸다 처음부터 지금 .NET 4.0 WPF 프로젝트를 생성 이전 10 초가 걸렸습니다. 이제는 화면에 표시되는 데 1.5 초 밖에 걸리지 않습니다.

상황은 나에게 지금 분명하다 : 그것은 천천히 할 수있는 것을 아무것도으로

내 응용 프로그램입니다. 그것의 첫 번째 wpf 앱이로드되었거나로드되지 않은 것입니다.

나는 ADOBE Reader처럼 할 것이라고 생각합니다. 응용 프로그램 가속기를 넣으십시오 ... 작은 환영의 세계 wpf 응용 프로그램이 되십시오 ...

+3

초기화 할 때 응용 프로그램이 수행하는 작업에 대해 좀 더 자세히 설명해야합니다. 더 작은 WPF 앱을 작성할 수 있으며 초기화하는 동안 계단식을 계산합니다. 이는 여러분보다 느리게 시작될 것입니다. – Venemo

+0

@Venemo : 이전에 말했듯이 저는 하드 코딩 된 30 개의 엔티티 목록을 DataGrid에 바인딩합니다. 데이터베이스 액세스가 전혀 없습니다! – msfanboy

+0

방정식에서 DataGrid를 가져 오는 경우 ... –

답변

4

ngen을 사용하여 어셈블리를 미리 컴파일 할 수 있습니다. 도움이 될 것입니다.

편집 : 도움이 될만한 것이 하나 있습니다. Visual Studio의 "new wpf application"템플릿을 기반으로하는 wpf 응용 프로그램 인 경우 응용 프로그램에서 사용할 수없는 어셈블리를 참조합니다.사용하지 않는 모든 어셈블리를 응용 프로그램 참조에서 제거하고 해당 참조가 도움이되는지 확인하십시오.

+1

JIT 코드의 일부 또는 전부가 첫 번째 실행에서 캐시됩니다. –

+7

그래야하지만 질문은 콜드 스타트 ​​(즉, 앱이 처음 실행될 때)를 더 빠르게 만드는 방법에 관한 것입니다. 앱이 시작될 때 많은 일을하지 않는 한, 도움이 될 ngen 이외의 것이 있다고 생각하지 않습니다. –

+3

Ngen은 작은 응용 프로그램에서 콜드 스타트를 느리게 만듭니다. 더 큰 DLL을로드 할 수 있습니다. –

1

정상이 아니므로 데이터베이스 또는 일부 네트워크에 연결합니까? 일부 OS 리소스를 기다리는 중입니까?

1

.Net 앱은 기본적으로 컴파일 된 앱과 비교하여 느리게 시작되지만 과도하게 들립니다. Procmon은 기다리고있는 것에 대한 통찰력을 제공 할 수 있습니다.