适用于大量数据的高性能数据结构

时间:2012-11-27 16:41:36

标签: c# performance data-structures word-processor

我正在研究大型文档的“文字处理器”控件的.NET版本 - 打印时最多可达10000页。

几年前我用Win32实现了这个功能,使用数组来保存行指针,根据需要在块中增长数组,并调用RtlMoveMemory(kernel32.dll)来移动指针。

主要的性能问题是

  • 文档从第1行到最后一行按顺序加载......
  • 鼠标移动需要通过从文档顶部偏移的“像素”来找到一条线,以调整鼠标光标。
  • 绘画需要通过其偏移量找到一条线并迭代下一行
  • 插入和删除不得使用年限(自动换行)

我已经阅读了很多关于

的内容
  • SortedList:加载超快,但插入怎么样?
  • SplayTree:听起来不错,因为用户将鼠标移动到相同的行上很多,但是从文档的底部滚动到中间呢?
  • SkipList:听起来像是一个很好的整体表演者,但是数据量很大会导致内存问题吗?
  • SortedDictionary和AVL树:因订单加载速度慢而被取消资格。
  • RedBlack Tree:无处不在,但最糟糕的是什么?这是最好的选择吗?

这些结构是否具有百万条目的良好性能? 如果是这样,最好的选择是什么?

我可能错过了其他想法/课程。

如果可能的话,我想坚持使用托管代码,但如果需要,我准备切换到脏代码。

0 个答案:

没有答案