Tag: c5

来自C5 Generic Collection Library的小型集合相对来说非常慢 – 可以做任何事情吗?

我最近一直在用C#测试C5系列,我很喜欢它们的function。 对于大型馆藏,性能似乎与通用同行相当。 对于小型集合,它们明显较慢。 我怀疑相对速度的急剧恶化来自于C5系列的恒定时间操作。 我所知道的一个操作是触发事件。 这可能是小型collections品表现不佳的原因吗? 可以通过关闭某些function来解决这个问题吗? 这是’性能测试: //Two containers to be tested. ‘Test’ is a wrapper over decimal. var arrayList = new C5.ArrayList(); var genericList = new System.Collections.Generic.List(); var toBeAdded = new List(); var watch = new Stopwatch(); //Fill both tested containers for (int i = 10; i > 0; i–) { var test […]

C#二叉树和字典

我正在努力解决何时使用二叉搜索树以及何时使用字典的概念。 在我的应用程序中,我做了一个小实验,使用了C5库TreeDictionary (我相信是一个红黑二叉搜索树)和C#字典。 字典在添加/查找操作时总是更快,并且总是使用更少的内存空间。 例如,在16809 条目中,字典使用342 KiB,而树使用723 KiB。 我认为BST应该是更高效的内存,但似乎树的一个节点需要比字典中的一个条目更多的字节。 是什么赋予了? BST比词典更好吗? 另外,作为一个附带问题,有没有人知道是否存在更快+更高内存效率的数据结构,用于存储字典类型访问的对,而不是上述任何一种结构?

用C#实现Hoey Shamos算法

好的,我现在从我当前的算法中获取正确的信息! 但是,要检查700,000个多边形,这太慢了! 上一期是固定的(My Line2D intersectsWith方法不正确) 现在这是确定我的瓶颈的问题! 该算法假设为O(nlog-n),因此它应该更快。 我的intersectsWith方法看起来不能更快,但我会发布它的代码,万一我错了 编辑:添加了IComparable接口 我读取线段交叉点的方法。 为了便于阅读,省略了一些代码。 public class Line2D : IComparable { public Line2D(XYPoints p1, XYPoints p2) { } public bool intersectsLine(Line2D comparedLine) { if ((X2 == comparedLine.X1) && (Y2 == comparedLine.Y1)) return false; if ((X1 == comparedLine.X2) && (Y1 == comparedLine.Y2)) return false; if (X2 == comparedLine.X1 && Y2 […]