2012-07-06 5 views
3

간단한 창을 가진 가장 기본적인 응용 프로그램조차도 시작하는 데 몇 초가 걸리며 Win32 등가물은 초 단위로로드됩니다..Net 응용 프로그램의 시작 속도가 느린 이유는 무엇입니까?

지연은 JIT가 기계 코드로 opcode를 전환하는 데 걸리는 시간 때문이 아니라 Windows가 .Net 프레임 워크를로드하는 데 걸리는 시간 때문이라고 읽었습니다. 난 그냥 확인 버튼 내 기본 응용 프로그램을 실행,

C:\>tasklist /m mscoree.dll 

Image Name     PID Modules 
========================= ====== ===================== 
explorer.exe     368 mscoree.dll 
BSQLServer.exe    652 mscoree.dll 
TOTALCMD.EXE     408 mscoree.dll 
Uedit32.exe     260 mscoree.dll 
OUTLOOK.EXE     1912 mscoree.dll 

다음을,하지만 여전히에 몇 초 걸렸 :

그래서, MS 'tasklist.exe CLI 응용 프로그램을 사용하여, 나는 mscoree.dll이 이미로드 된 경우 확인 표시됩니다.

mscoree.dll이 .Net이로드 된 사실을 가정하면 적어도 기본 Windows를 처리하고 지연되는 이유는 무엇입니까? FWIW, XPSP3 호스트에 있습니다.

.Net 프레임 워크가 각 프로세스에 대해로드 되어도 다른 프로세스에서 이미 실행 중이므로 다른 프로세스의 코드를 RAM에 복사한다고 가정합니다.

감사합니다.


편집 : 그것은 느린 초기 시작 시간처럼 보인다 것은 아닙니다 JIT 또는로드 닷넷에, 안티 바이러스/방화벽 응용 프로그램을 사용하기 때문이었다. 또 다른 가능한 문제 : 앱이 차가운 상태에서 시작하는 데 약간 느린 경우 시작시 맨 처음 최소 상태 만로드해야합니다.

+1

어떻게 앱을 실행하고 있으며 어떤 종류의 앱입니까? 최소의 테스트와 마찬가지로 명령 행에서 실행되는 간단한 콘솔 앱을 사용해 보셨습니까? –

+1

[Process Monitor] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)를 사용하면 응용 프로그램의 UI가 나타날 때까지 실제로 어떤 일이 발생하는지 확인할 수 있습니다. 여기에는 DLL 로딩, 파일 및/또는 네트워크 액세스와 같은 이벤트가 포함됩니다. –

+0

질문에 명백하게 상충되거나 부정확 한 정보로 인해 대답하기가 어렵습니다. 누가 초기 지연이 JIT 때문이 아니라고 했습니까? –

답변

2

Windows 7에 간단한 C# 테스트 응용 프로그램이있어 즉시 시작할 수 있습니다. 이것은 탐색기에서 실행 파일을 doubleclick 할 때입니다. Visual Studio에서 Visual Studio가 상황을 컴파일해야하는지 확인하기 때문에 디버깅 등을위한 도구가 필요할 수 있습니다.

+0

비록 내가 꽤 살찐 기계 (SSD, 쿼드 코어 i7)를 가지고 있지만, 여기에도 마찬가지다. –

+0

OT : 이번 달에 내 240Gb SSD 6G를 설치했는데 Visual Studio에서이 패키지를 좋아합니다 : o) – balexandre

+0

FWIW, VB Express IDE가 아닌 직접 빌드 된 Release 바이너리를 실행했습니다. – Gulbahar

1

또한 Avast Antivirus는 불필요한 파일이 실행되기 전에 검사 할 수있는 "Deepscreen"기술을 사용합니다 . Avast Exlusions 설정 화면에서 내 VB.NET 응용 프로그램 경로에 대한 예외를 추가했는데 이제 비정상적인 지연없이 즉시 시작됩니다.

+0

내 경우에는 Avast가 명백한 범인이었다. 나는 Avast가 활성화 된 상태에서 매 25 초에서 30 초 사이에 열리는 죽은 간단한 .NET Windows Forms 응용 프로그램을 사용했으며, Avast를 "10 분 동안 사용 안 함"으로 설정하면 즉시로드됩니다. –

관련 문제