在我的c#程序中,我的要求是计算业务逻辑执行的时间跨度,该时间跨越foreach循环,我必须存储时间跨度.
我正在使用以下代码
for (int i = 0; i < 100; i++)
{
DateTime start= DateTime.Now;
// Business logic
DateTime end= DateTime.Now;
TimeSpan time = start.Subtract(end);
// Save timespan in log file
}
Run Code Online (Sandbox Code Playgroud)
请纠正我是否正在使用正确的代码,或者我是否需要修改以获得更好的性能和结果.
我的主要问题是我不知道如何在谷歌搜索我正在寻找的东西,因为我得到了不同的结果(可能它不是倒数计时器).
我想计算函数执行所需的时间.指令需要很长时间才能执行(秒,而不是几毫秒).
如何在C#/ NET中做到这一点?
我有以下代码:
DateTime start = DateTime.Now;
Thread.Sleep(60000);
DateTime end = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
我想计算开始和结束之间的分钟差异.我该怎么办呢?对于上面的示例,结果应为"1".
提前致谢!
我想了解在 C# 中将大量项目存储在内存中的成本。我需要使用的数据结构是字典或类似的。假设我想要的项目数量约为 1 亿,但应用程序不会立即达到该数量。我们需要很长时间才能达到极限。
我担心摊销的运营成本,但我不能在任何特定时刻承受太高的成本。所以通常使用动态数据结构,当结构已满时,它会重新分配自己。在字典的情况下,我认为它甚至会重新索引每个项目。因此,假设我们是应用程序维护 2000 万个刚刚达到字典容量的项目的关键点。然后,当分配新的字典存储时,需要重新索引这 2000 万个项目。
这就是为什么我认为一系列字典可能是个好主意的原因。假设我创建了 256 个字典。这立即将每个内部字典的大小限制为少于 100 万个项目,这应该是易于管理的,并且所有索引都发生在多达 100 万个项目的过程中。这样做的成本似乎只是每次操作一个额外的索引以找到要查看的正确字典。
这是一个合理的方法吗?我的分析是正确的还是我认为 C# 字典会因为某种原因表现得更好?有没有其他更好的解决方案?我正在寻找一种与 C# 字典具有相同时间复杂度的数据结构。
编辑:字典键是一个随机值,所以我可以用它的第一口来非常便宜地找到我在 256 个字典数组中的索引。
我目前不考虑使用数据库,因为我希望所有项目都能以极低的成本立即可用。我确实需要以很少的开销在恒定时间内查找。我可以承受插入速度变慢,但仍然是恒定的时间。与删除相同,可以慢一点,但需要恒定的时间。
应该可以容纳内存中的所有项目。这些项目很小,每个大约有 50 个字节的数据。所以数据结构对于每一项都不能有太多的开销。
我编写了以下代码来打印列表中的项目值.现在我想测量哪一个更快,我将有大量的清单来处理.请说明为什么你认为更好(如有任何证据)
那么我该如何计算处理时间呢?手动创建一个庞大的列表是唯一的选择吗?
public void printMedod(string strPrintListVal)
{
Console.WriteLine(strPrintListVal);
}
static void Main(string[] args)
{
Program p1 = new Program();
List<string> listString = new List<string> { "Rox","Stephens","Manahat","Lexus",":)"};
listString.ForEach(p1.printMedod);
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
我也可以使用GetEnumerator做同样的事情:
static void Main(string[] args)
{
List<string> listString = new List<string> { "Rox","Stephens","Manahat","Lexus",":)"};
var enumerator = listString.GetEnumerator();
while (enumerator.MoveNext())
{
var pair = enumerator.Current;
Console.WriteLine(pair);
}
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud) 我想在我的代码中测试某些方法和SQL查询所需的时间.我尝试过以下方法:
DateTime start = DateTime.Now;
//Do something
DateTime end = DateTime.Now;
TimeSpan ts = end - start;
int millis = ts.Milliseconds;
Run Code Online (Sandbox Code Playgroud)
但我觉得这不是正确的做法.对于某些方法,我经常会得到1的值,对于其他方法,我会经常得到200,有没有准确的方法来衡量和记录这种事情?
我正在为一个应用程序实现一些诊断,用户可以看到图形更新的速度,我遇到了一些看似奇怪的行为.我的图形更新功能是使用Timer调用的,它看起来像这样:
private void RefreshScreen(object sender, EventArgs e)
{
DateTime begin = DateTime.Now;
// Do some updating...
DateTime end = DateTime.Now;
graphicsUpdateRate = (end - begin).TotalMilliseconds;
}
Run Code Online (Sandbox Code Playgroud)
当我稍后在另一个函数中将graphicsUpdateRate显示到一个单独的窗口时,它几乎总是为0.偶尔它实际上会是~0.5,但我从未在低于0.48的情况下看到它.有什么理由为什么如果它低于这个会将它钳制到0?使用TimeSpan.TotalMilliseconds时有什么我想念的吗?我对此感到困惑,因为它似乎是随机的.