VSTO 추가 기능이 포함 된 Word는 처음 시작시 20-30 초가 걸리고 두 번째 시작시 6-7 초가 걸립니다. 이것은 Word 2007, .NET 3.5 및 Windows XP에서 발생합니다. 추가 기능이없는 단어는 콜드 스타트에 약 5 초, 웜 스타트에 2-3 초가 걸렸습니다. 콜드 스타트 테스트에서 Word는 부팅 후 시작된 첫 번째 응용 프로그램이었으며 .NET 코드를 처음 사용했습니다.
애드 인의 코드 실행 시간이로드 시간에 별다른 영향을 미치지 않는 것으로 나타났습니다. VSTO를 사용하면 .NET Framework 및 VSTO 런타임을로드하고 초기화해야합니다. 속도 저하는 디스크에서로드하는 오버 헤드와 .NET/VSTO 초기화의 일부 조합에 이릅니다.
물론 처음 제기 된 '솔루션'은 로그인 과정에서 Word를 보이지 않게 시작한 다음 Word 프로세스를 중단하고 디스크 캐시를 예열하는 것이 었습니다. 물론 이것은 부팅하는 동안 여분의 45 초가 걸리는 동안 컴퓨터가 응답하지 않게 만들었습니다 (필자는 디스크 경합을 증가 시켰기 때문입니다). 그러나, 와우, Word는 (로그인 한 직후에 시작된 한) 빠르게 시작되었습니다. 다행히 우리는 사용자에게이 솔루션을 제공하지 않았습니다.
우리는 간단한 .NET 응용 프로그램도 작성했습니다.이 응용 프로그램은 Word 추가 기능과 동일한 종속성을로드하고 종료하기 만하면됩니다. 로그인 중에도 일정이 잡힐 것입니다. Word 시작에서 몇 초가 걸렸지 만 로그인 시간이 길어졌지만 사용자 중 일부가 Word를 사용하지 않는 경우에도 그 거래가 무의미한 것처럼 보였습니다. 세션. Word를 사용하기를 원했고 바탕 화면이 반응을 시작하자마자 Word를 시작했다면 무의미한면을 추가하면 Word는 길을 부드럽게 만들어야하는 사용자 지정 응용 프로그램과 리소스를 놓고 경쟁하게되었습니다.
Word 템플릿 (VBA) 추가 기능도 있으므로 상황이 복잡합니다. 이것들은 시작 시간의 좋은 덩어리이기도합니다. 두 번째 런타임은 초기화되어야하고 더 많은 파일은 디스크의 일부 흩어져있는 영역에서로드해야하기 때문입니다. Word에서 VSTO 추가 기능 또는 VBA 추가 기능 만있는 Word로 VBA 및 VSTO 추가 기능이있는 Word로 이동하면 콜드 시작 시간이 비선형으로 증가합니다. 즉, 더 많은 종속성을 추가하면 총로드 시간이 늘어나고 개별 종속성의로드 시간이 추가됩니다.
또한 COM 심 마법사를 사용해 보았습니다. COM Shim을 사용하면 VSTO 런타임이 제거되지만 추가 기능에서 .NET을 안전하게 사용할 수 있습니다. 생성 된 COM Shim을 사용하기 위해 VSTO 코드를 변환하는 것은 너무 어렵지 않았습니다. 이것은 좋은 시간에 로딩 시간을 향상 시켰습니다. (나는 수치가 없습니다. 콜드 스타트 시간은 절반으로 줄였습니다.하지만 VBA Add-Ins가 포함되어있었습니다.) 우리의 이상적인 솔루션은 COM 심을 사용하여 .NET 추가 기능을로드하고 모든 VBA 코드를 .NET으로 마이그레이션하는 것입니다. 이 솔루션이 갑자기 나타 났을 때 콜드 스타트 시간은 큰 문제가 아니며 우선 순위가 떨어졌습니다!
시작/접속시 추가 기능은 무엇입니까? 추가 기능, Office 또는 VSTO 로더에서 시간이 소비되는지 코드를 프로파일 링 할 수 있습니까? 하드웨어가 VSTO를 실행하기에는 너무 느릴 수도 있습니다. –
어떻게 프로파일 링 할 수 있습니까? 나는 Red Gate ANTS를 가지고 있지만, .exe 만 시작하고 프로파일 링 할 수 있기 때문에 Word를 선택할 수 있습니다. 그러면 볼 세부 사항이 없습니다. – Kurtevich
프로필을 만드는 방법을 찾았고 추가 기능의 메서드가로드 시간에 약간의 중요성을 가지지 않으므로 추가 기능의 코드와 아무 관련이 없어야합니다. 적재되다. 그런데 Warmup과 같은 레지스트리 설정을 시도했는데 LoadBehavior = 9 (beautifull이지만 "add-in"과 같은 추가 기능을로드하는 방법) 등이 있습니다. 어쨌든 , 현재이 문제에 대한 작업이 일시 중지되었습니다. 의견을 주셔서 감사합니다. 0xA3입니다. 지금은 비판적이지는 않지만, 이것에 대한 생각을 찾는 것이 여전히 흥미로울 것입니다. – Kurtevich