言語はC#、使用しているフレームワークは.Net Framework 4.5です。
実行中にタスクを生成し、並列処理を行うプログラムを作成していますが、
1タスク作成、実行するのに物理メモリをどれだけ消費するかを計測するプログラムは作成できますでしょうか?
以下のように、ProcessクラスのWorkingSet64プロパティで、現在のプロセスに割り当てられた物理メモリの量を
取得しようとしていますが、タスク生成前と生成後で値に変化がありません。
C#
1using System; 2using System.Diagnostics; 3using System.Threading; 4using System.Threading.Tasks; 5 6namespace TaskMemory 7{ 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 // 現在のプロセス情報取得 13 Process p = Process.GetCurrentProcess(); 14 p.Refresh(); 15 16 Console.WriteLine("タスク開始前の物理メモリ使用量: {0}", p.WorkingSet64); 17 18 // タスクを生成して実行 19 Task t = Task.Run(() => { SubMethod(); }); 20 21 t.Wait(); 22 23 Console.WriteLine("タスク開始後の物理メモリ使用量: {0}", p.WorkingSet64); 24 25 // ここで止める。 26 Console.ReadKey(); 27 } 28 29 /// <summary> 30 /// 並列処理 31 /// </summary> 32 static void SubMethod() 33 { 34 Console.WriteLine("並列処理開始\n"); 35 36 double r = 0.0; 37 38 for (int i = 1; i <= 50000; i++) 39 { 40 for (int j = 1; j <= 50000; j++) 41 { 42 r = (double)i / (double)j; 43 } 44 } 45 46 Console.WriteLine("並列処理終了"); 47 } 48 } 49}
コードの間違い、別の方法がありましたら、お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/30 15:15