Estoy tratando de determinar qué enfoque para eliminar una cadena es el más rápido.¿Cuál es la mejor manera de medir cuánto tiempo tarda el código en ejecutarse?
Simplemente consigo comienzan y final vez y muestran la diferencia.
Pero los resultados son tan variados, p. Ej. como se muestra a continuación, el mismo método puede tomar de 60 ms a 231 ms.
¿Cuál es un mejor método para obtener resultados más precisos?
alt text http://www.deviantsart.com/upload/1q4t3rl.png
using System;
using System.Collections;
using System.Collections.Generic;
namespace TestRemoveFast
{
class Program
{
static void Main(string[] args)
{
for (int j = 0; j < 10; j++)
{
string newone = "";
List<string> tests = new List<string>();
for (int i = 0; i < 100000; i++)
{
tests.Add("{http://company.com/Services/Types}ModifiedAt");
}
DateTime start = DateTime.Now;
foreach (var test in tests)
{
//newone = ((System.Xml.Linq.XName)"{http://company.com/Services/Types}ModifiedAt").LocalName;
newone = Clean(test);
}
Console.WriteLine(newone);
DateTime end = DateTime.Now;
TimeSpan duration = end - start;
Console.WriteLine(duration.ToString());
}
Console.ReadLine();
}
static string Clean(string line)
{
int pos = line.LastIndexOf('}');
if (pos > 0)
return line.Substring(pos + 1, line.Length - pos - 1);
//return line.Substring(pos + 1);
else
return line;
}
}
}
No creo que haya nada intrínsecamente inexacta sobre los meassurements sí mismos. Lo que probablemente quiere decir es que no esperaba tanta dispersión. Supongo que deberías asegurarte de que ningún otro programa en tu computadora esté usando todo tu tiempo de CPU o memoria. –
Tenga en cuenta que el "tiempo de reloj de pared" medido por DateTime solo es preciso hasta algo así como 30 ms. DateTime es para representar cosas como un reloj en la pared, o la última vez que editó un archivo; no es necesario tener una precisión de nanosegundos, y por lo tanto no es así. –