2011-01-04 44 views
12

Tôi đang làm việc trên một giải pháp ASP.NET MVC có kích thước trung bình với Visual Studio 2010 và Resharper. Dự án rất nhanh khi tôi bắt đầu phát triển nó 1 1/2 năm trước, nhưng theo thời gian nó đã trở nên chậm hơn - không chỉ biên dịch, mà còn là thời gian cần để khởi tạo lại trang web. Vì tôi đang thực hành TDD và tái cấu trúc khá thường xuyên, tôi thường xuyên cần phải biên dịch lại một lần chạy thử nghiệm của tôi, vì vậy tôi đang tìm cách để giảm thiểu điều này nếu có thể.Tăng tốc biên dịch và kiểm tra đơn vị trong Visual Studio 2010/Resharper/ASP.NET MVC

Vấn đề một cách chi tiết

Tôi phải mất khoảng 20-25 giây từ khi bắt đầu để biên dịch lại dự án để có thể xem kết quả trong một trình duyệt web.

Chạy thử nghiệm đơn vị đơn lẻ (chỉ là một thử nghiệm đơn lẻ, không phải toàn bộ bộ) với nhân viên thử nghiệm Resharper cũng rất chậm (khoảng 15-20 giây). Đối với một số lý do lạ có vẻ như Resharper mất phần lớn thời gian khởi tạo chạy thử nghiệm và chỉ dành một phần rất nhỏ thực sự chạy thử nghiệm.

Những gì tôi đã làm:

  • thay thế ổ cứng của tôi với một SSD (tác động rất lớn)
  • Moved biên soạn ASP.NET và Windows dir thư mục Temp để SSD giống như (phần cứng) Ổ đĩa RAM (tác động lớn, nhưng trước đó là SSD)
  • Vô hiệu hóa biên dịch tự động của một dự án mà tôi hiếm khi sửa đổi (Tác động nhỏ vì dự án đó vẫn còn nhỏ).
  • Làm sạch các tham chiếu không cần thiết đối với .NET và thư viện của bên thứ ba (tác động rất nhỏ, nếu có)
  • Một số thủ thuật ảo được thảo luận trong this blog post. (tác động rất nhỏ, nếu có).

Tuy nhiên, tôi vẫn bị mắc kẹt với số liệu (chậm?) Ở trên và tôi cảm thấy điều này đang làm tổn hại đến năng suất của tôi. Bây giờ tôi tự hỏi phải làm gì tiếp theo.

hệ thống hiện tại của tôi thiết lập:

  • Core 2 Quad Q6600 CPU
  • 4GB DDR2 800 RAM
  • 120 GB SSD
  • Windows 7 x64
  • Visual Studio 2010 Ultimate với Resharper 5.5

số kỹ thuật giải pháp của tôi:

  • 22,000 Ngành, nghề NET 4 C# Mã
  • 3 dự án: Một ASP.NET MVC, một dự án thử nghiệm, một thư viện mục đích chung nhỏ được bao gồm bởi hai khác và đó Tôi không biên dịch trừ khi có điều gì đó thay đổi.
  • 35 tham chiếu đến các thư viện khác (.NET framework và các công cụ mã nguồn mở)
  • ~ 200 lần xem
  • 850 Unit Tests

Bây giờ câu hỏi của tôi:

  • Would nâng cấp RAM của tôi đến 8GB có thể cho tôi một tăng hiệu suất đáng kể ?
  • Những số liệu này có bình thường không? Hoặc có lẽ điều này có thể là một vấn đề với giải pháp của tôi?
  • Bạn sẽ thử làm gì tiếp theo (ngoài mua máy tính hoàn toàn mới)?

Cảm ơn,

Adrian

Edit: Một điều đặc biệt kỳ lạ là khi tôi nhấn nút "xây dựng giải pháp", Visual Studio dành khoảng 8 giây hiển thị cho tôi một biểu tượng chờ đợi cho đến khi nó thực sự bắt đầu biên dịch và cửa sổ biên dịch đang được cập nhật. IDE không có hiệu quả trong giai đoạn này. Đó là một phần tốt của thời gian biên dịch thực tế. Tôi tự hỏi Visual Studio đang làm gì trong giai đoạn này?

+0

Có bao nhiêu dự án? Trạng thái phụ thuộc nội bộ của các dự án như thế nào? Nếu bạn chạy lại cùng một thử nghiệm thì nó có mất thời gian không? – Jaime

+0

Bạn có thể dỡ bỏ bất kỳ dự án nào không? Điều này không bao gồm chúng từ quá trình biên dịch ... –

+0

Tôi đã thiết lập tương tự với 6Gb RAM nhưng không có SSD. VS2010 là chậm chạp để tải lên và biên dịch - Tôi thấy rằng việc vô hiệu hóa ReSharper có một hiệu ứng rất tích cực. Thật không may, tôi đã đến để dựa vào nạng đặc biệt này ... er ... plug-in và đã quyết định rằng cơn đau có lẽ là giá trị nó trong trường hợp của tôi. – nerraga

Trả lời

0

Bạn có thể thiết lập một xây dựng máy chủ mà sẽ chạy:

  • Build
  • thử nghiệm
  • Deployment

Bạn sẽ phải đợi khoảng cùng một lượng thời gian để xem phiên bản mới được phát hành, nhưng nó sẽ không tiêu tốn tài nguyên PC phát triển của bạn.

+0

Có, nhưng tôi vẫn không biết phải làm gì với thời gian mới đạt được. Nếu nó là một vài phút, tôi có thể đọc một số blog hoặc duyệt SO, nhưng 30 giây không đủ để làm bất cứ điều gì đáng giá. –

6

Đối với giải pháp kích thước đó, có vẻ như phần cứng của bạn là ok và phải đủ nhanh để xây dựng thử nghiệm. Những gì tôi đã tìm thấy là hầu hết các vấn đề hiệu suất xây dựng (trong trường hợp của tôi anyway) có liên quan đến phụ thuộc dự án và không phải thời gian biên dịch thực tế. Tôi vài ý tưởng để giúp bạn tìm ra các vấn đề:

  1. thử biến "MSBuild dự án xây dựng đầu ra rườm rà" để "chẩn đoán" (Options-> Dự án và Giải pháp> Xây dựng và Run), cũng cài đặt VSCommands mở rộng (nó chứa một phần mở rộng thống kê xây dựng cho thấy thời gian thực hiện trên mỗi bước) và kiểm tra những gì là phần đó là nói lên thời gian nhất.

  2. Phụ thuộc vào các dự án khác (35 bạn tham khảo) trong GAC hay chúng phân tán qua HD của bạn? Có phải họ tự động làm mới tài liệu tham khảo (họ có .refresh tập tin bên dưới chúng). Maay cố gắng đơn giản hóa các nghị quyết của những phụ thuộc, tức là sao chép địa phương tất cả các DLL vào thư mục bin và xem nếu nó giúp

3

Bạn có thể thử các tính năng Resharper.Internal bí mật "đồng thời xây dựng với MSBuild" như mô tả here .

+0

Cảm ơn gợi ý! Đây thực sự là một viên ngọc ẩn. Thật không may nó dường như không làm việc với dự án của tôi (tôi chỉ nhận được một số lỗi mơ hồ cùng với một số ngoại lệ Resharper), nhưng nó có thể hữu ích cho các dự án trong tương lai. –

+0

Có vẻ như tùy chọn này không tồn tại trong Resharper 6.1 EAP. – adamjford

1

Vì đây là dự án MVC, hãy đảm bảo "Chế độ xem xây dựng" của dự án bị tắt.

  1. phải tập tin Nhấn Project -> Unload Dự án dự án MVC của bạn
  2. Ngay Project bấm File -> Edit Project
  3. Kiểm tra thiết lập ... sai
  4. Lưu và Right Click -> dự án tải lại .

Tôi để nó bật để trình biên dịch tìm thấy lỗi của tôi trước khi khách hàng của tôi làm. Nhưng Chế độ xem xây dựng rất chậm.

+0

Tôi đã biết về cài đặt này trong một thời gian dài (thậm chí đã viết một bài viết blog về nó một lần), nhưng cảm ơn cho gợi ý. Bạn nói đúng, nó làm chậm quá trình xây dựng. Tôi chỉ sử dụng nó trong chế độ phát hành để đảm bảo không có lỗi chính tả trong mã nguồn của tôi trong chế độ xem. –

1

Tôi gặp sự cố tương tự. Vì tôi đã nhấn nút 'Run tests' nên mất một phút để thử nghiệm chạy.

Vấn đề của tôi là tôi đã có cài đặt thử nghiệm trỏ đến 'Trace and Impact' thay vì 'Local'.

Để chọn cài đặt thử nghiệm, hãy chuyển đến menu 'Test' và sau đó 'Select Active Test Settings > Local'.

Điều đó phù hợp với tôi.

0

Vấn đề tương tự ở đây, tôi đã bật 'mã vùng phủ sóng'.

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