相关疑难解决方法(0)

秒表与使用System.DateTime.Now进行计时事件

我想跟踪我的代码的性能,所以我使用了存储开始和结束时间System.DateTime.Now.我将两者之间的差异作为执行代码的时间.

我注意到差异似乎并不准确.所以我尝试使用一个Stopwatch对象.事实证明,这更加准确.

谁能告诉我为什么Stopwatch比计算开始和结束时间之间的差异更准确System.DateTime.Now

顺便说一句,我不是说百分之十.我得到了大约15-20%的差异.

c# performance datetime timing stopwatch

91
推荐指数
3
解决办法
6万
查看次数

HashSet <T>(IEqualityComparer <T>)的查找时间复杂度是多少?

在C#.NET中,我喜欢使用HashSets,因为它们的查找时间复杂度为O(1).如果我要查询大量数据,我通常更喜欢将HashSet用于List,因为它具有这种时间复杂性.

令我困惑的是HashSet的构造函数,它将IEqualityComparer作为参数:

http://msdn.microsoft.com/en-us/library/bb359100.aspx

在上面的链接中,备注注意到"构造函数是一个O(1)操作",但如果是这种情况,我很好奇,如果查找仍然是O(1).

特别是,在我看来,如果我要编写一个Comparer来传递给HashSet的构造函数,每当我执行查找时,必须在每个键上执行Comparer代码以检查是否存在一场比赛.这不是O(1),而是O(n).

当元素添加到集合中时,实现是否在内部构建查找表?

一般来说,我如何确定有关.NET数据结构复杂性的信息?

c# complexity-theory runtime hashset

17
推荐指数
2
解决办法
2万
查看次数