2009-08-12 5 views
3

VB.NETで書かれたクライアント用のプロジェクトがあります。プロジェクトの1つでは、約100個のモジュールがあり、すべて非常に簡単です。それらはオブジェクト型間で変換する拡張メソッドです。ここに小さなスニペットがあります:VB.NET SLOWコンパイル時間 - ディスクまたはCPUアクティビティなし

Public Module ScheduleExtensions 

<System.Runtime.CompilerServices.Extension()> _ 
Public Function ToServicesData(ByVal source As Schedule) As ScheduleServicesData 
    If (source IsNot Nothing) Then 
     Dim target As New ScheduleServicesData 
     With target 
      .CenterId = source.CenterId 
      .EmployeeGuid = source.EmployeeGuid 
      .EndDateTime = source.EndDateTime 

問題は、このプロジェクトだけでは2分以上かかることです。私はdiskmonとfilemonを実行し、ビルドがハングアップしている間はファイルシステムにアクセスしません。大半の実行中にCPU使用率も低くなります。約2分後にビルドが終了し、ディスクとCPUの処理が行われます。問題はどのマシンでも再現できます(これまでに試したのは4つです)。

私は今までvbcコマンドラインを使ってプロジェクトをコンパイルしていましたが、そこにも問題があります。

コンパイル時間の悪いVB.NET拡張メソッドについて何かありますか?それはループ/取得/設定などよりも複雑な私たちが使用している唯一の機能です。

答えて

0

このような小さなサンプルに基づいて問題がどのようになるかは分かりません。コンパイラの拡張メソッドサポートについては本質的に遅いことは何もなく、この分野では多くの回帰テストがあります。バグがある場合は、問題の原因となるいくつかの要因が組み合わされている可能性があります。あなたは時間があれば

で、この問題に関するバグを報告してくださいそれはあなたが問題を再現小さなサンプルを提供できるかどうかを調査するために、バグがはるかに容易になります。

1

重要なCPUまたはDISKアクティビティを示さないパフォーマンス上の問題は、常にネットワーク待機、ネットワークパフォーマンス自体、または他のシステムのサービスからの応答を待っている可能性があります。サンプルで問題があるとは思わないので、問題はプロジェクト、プロジェクト設定、VS環境、またはシステムの環境のいずれかから発生していると考える必要があります。

システムからのすべてのネットワーク通話を監視し、何が起こっているかを見るツールを試すことがあります。

関連する問題