Soy nuevo en C# world. Estoy intentando calcular el tiempo tomado por un algoritmo para fines de comparación. El siguiente código mide el tiempo transcurrido desde que se llama a una subrutina hasta que la subrutina vuelve al programa principal. Este ejemplo se toma de "Estructuras de datos a través de C#" de Michael McMillan. Después de ejecutar este programa, el resultado es Tiempo = 0, que es incorrecto. El programa parece ser lógicamente correcto. Alguien puede ayudarme. Lo que sigue es el códigoTiempo necesario para completar un proceso
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Chap1
{
class chap1
{
static void Main()
{
int[] nums = new int[100000];
BuildArray(nums);
Timing tObj = new Timing();
tObj.startTime();
DisplayNums(nums);
tObj.stopTime();
Console.WriteLine("Time: " + tObj.result().TotalSeconds);
Console.WriteLine("Start Time: " + tObj.startTime().TotalSeconds);
Console.WriteLine("Duration : " + tObj.result().TotalSeconds);
Console.ReadKey();
}
static void BuildArray(int[] arr)
{
for (int i = 0; i <= 99999; i++)
arr[i] = i;
}
static void DisplayNums(int[] arr)
{
for (int i = 0; i <= arr.GetUpperBound(0); i++)
Console.WriteLine(arr[i]);
}
}
class Timing
{
TimeSpan StartTiming;
TimeSpan duration;
public Timing()
{
StartTiming = new TimeSpan(0);
duration = new TimeSpan(0);
}
public TimeSpan startTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
StartTiming = Process.GetCurrentProcess().Threads[0].UserProcessorTime;
return StartTiming;
}
public void stopTime()
{
duration = Process.GetCurrentProcess().Threads[0].UserProcessorTime.Subtract(StartTiming);
}
public TimeSpan result()
{
return duration;
}
}
}
No lo ejecute en modo de depuración (de acuerdo con algunos recursos en línea). – Kiril
¡tuve el mismo problema! Ben Voigt tiene razón, no se puede asumir, que el hilo con índice 0 (ÍNDICE, no ID de hilo !!!) es el que le interesa. Estoy utilizando un PInvoke para GetCurrentThreadId() ahora para obtener el ID de hilo correcto . Luego recorro todos los hilos y verifico el que tiene ese ID de hilo. – Jane