간단한 창을 가진 가장 기본적인 응용 프로그램조차도 시작하는 데 몇 초가 걸리며 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 또는로드 닷넷에, 안티 바이러스/방화벽 응용 프로그램을 사용하기 때문이었다. 또 다른 가능한 문제 : 앱이 차가운 상태에서 시작하는 데 약간 느린 경우 시작시 맨 처음 최소 상태 만로드해야합니다.
어떻게 앱을 실행하고 있으며 어떤 종류의 앱입니까? 최소의 테스트와 마찬가지로 명령 행에서 실행되는 간단한 콘솔 앱을 사용해 보셨습니까? –
[Process Monitor] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)를 사용하면 응용 프로그램의 UI가 나타날 때까지 실제로 어떤 일이 발생하는지 확인할 수 있습니다. 여기에는 DLL 로딩, 파일 및/또는 네트워크 액세스와 같은 이벤트가 포함됩니다. –
질문에 명백하게 상충되거나 부정확 한 정보로 인해 대답하기가 어렵습니다. 누가 초기 지연이 JIT 때문이 아니라고 했습니까? –