2012-08-14 29 views
10

Tôi có một ứng dụng winforms khá lớn và phức tạp. Trong một nỗ lực để giảm thời gian khởi động, tôi đã tạo trước các hội đồng tuần tự hóa bằng cách sử dụng tệp lô sau.Tại sao thời gian khởi động .NET của tôi tăng lên với các hội đồng tuần tự được tạo trước?

; delete any existing serialization assemblies 
del *XmlSerializers.dll 

; gen new serialization assemblies 
for %%a in (*.dll) do sgen /assembly:%%a 

; delete .deleted files (generated for assemblies which do not allow serialization) 
del *.dll.deleted* 

Tuy nhiên, thật ngạc nhiên, thời gian khởi động thực sự tăng từ 4,6 giây lên 6,1 giây - nhảy 1,5 giây. Điều này đúng cho dù đó là một khởi đầu lạnh hay ấm áp.

Vì vậy, câu hỏi:

  1. Tại sao ứng dụng của tôi bắt đầu chậm hơn với cụm serialization tại chỗ?
  2. Có cách nào để xem qua Perfmon hoặc một số công cụ khác khi ứng dụng đang tạo ra các hội đồng tuần tự hóa không?
  3. Tôi có tạo ra các bộ tuần tự hóa chính xác không?
+0

trừ khi ai đó biết cách bật tô sáng cú pháp tệp hàng loạt, chúng tôi sẽ chỉ phải để nó là 'lang-none' . – Adam

+0

Có bao nhiêu serializers bạn đang tạo .... nếu một số lớn .... có thể bạn có thể kết hợp chúng với ILMerge? Bạn đang chạy trên Windows 64bit? Bạn có thêm tài liệu tham khảo cho các DLL tuần tự hóa được đặt trước trong dự án của bạn không? –

+0

Bạn có thể sử dụng tùy chọn/Loại để chỉ tạo mã tuần tự cho Loại sẽ được đăng ký .... thay vì tất cả các loại công khai trong tệp DLL của bạn. –

Trả lời

0

Vì .NET có để kiểm tra xem chữ ký là hợp lệ

+6

Vì vậy, bạn đang nói nó là nhanh hơn để tạo ra hội đồng serialization hơn để kiểm tra một chữ ký hợp lệ? – AngryHacker

+0

Hãy xem, nó chỉ nghe có vẻ điên rồ khi bạn đặt nó theo cách đó. –

+0

@Cole Có tham khảo nào mà bạn có thể trích dẫn để sao lưu điều này không? –

1

Bạn nên cấu hình ứng dụng của bạn để xem lý do tại sao thời gian khởi động ngày càng tăng. Perfview sẽ là một công cụ tốt để làm như vậy.

Nếu mất quá nhiều thời gian trong JITtting, hãy xem xét NGEN ứng dụng của bạn. Nếu quá nhiều trang được tải, hãy xem xét sử dụng tối ưu hóa mpgo nếu bạn đang chạy theo .Net 4.5

Các vấn đề liên quan