C# 针对大量数据的高性能数据结构
我正在开发.NET版本的“文字处理器”控件,用于处理大型文档,这意味着打印时最多可打印10000页 几年前,我用Win32实现了这个功能,使用数组来保存行指针,根据需要将数组分块增长,并调用RtlMoveMemory(kernel32.dll)来移动指针 主要的性能问题是C# 针对大量数据的高性能数据结构,c#,performance,data-structures,word-processor,C#,Performance,Data Structures,Word Processor,我正在开发.NET版本的“文字处理器”控件,用于处理大型文档,这意味着打印时最多可打印10000页 几年前,我用Win32实现了这个功能,使用数组来保存行指针,根据需要将数组分块增长,并调用RtlMoveMemory(kernel32.dll)来移动指针 主要的性能问题是 文档按从第1行到最后一行的顺序加载 鼠标移动需要找到一条线,通过它与文档顶部的“像素”偏移来调整鼠标光标 绘画需要通过偏移量找到一条线,并在下一条线中迭代 插入和删除操作不得耗时(换行) 我读了很多关于 SortedLi
- 文档按从第1行到最后一行的顺序加载李>
- 鼠标移动需要找到一条线,通过它与文档顶部的“像素”偏移来调整鼠标光标
- 绘画需要通过偏移量找到一条线,并在下一条线中迭代
- 插入和删除操作不得耗时(换行)
- SortedList:装载速度非常快,但插入速度如何
- SplayTree:听起来不错,因为用户经常在同一行上移动鼠标,但如何从文档的底部滚动到中间呢
- SkipList:听起来整体表现不错,但在高数据量的情况下会出现内存问题吗
- SortedDictionary和AVL树:因顺序加载缓慢而不合格
- 红黑树:没有最好的,但没有最坏的?这是最好的选择吗
如果可能的话,我想坚持使用托管代码,但如果需要,我准备切换到脏代码。尝试列出的各种可能性有那么难吗?是的。这将是我有史以来第一次使用.NET。但你似乎很有经验,我本希望得到一个建设性的回答。谢谢如果您正在寻找用于文本处理的数据结构类型,请参见以下问题: