Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 针对大量数据的高性能数据结构_C#_Performance_Data Structures_Word Processor - Fatal编程技术网

C# 针对大量数据的高性能数据结构

C# 针对大量数据的高性能数据结构,c#,performance,data-structures,word-processor,C#,Performance,Data Structures,Word Processor,我正在开发.NET版本的“文字处理器”控件,用于处理大型文档,这意味着打印时最多可打印10000页 几年前,我用Win32实现了这个功能,使用数组来保存行指针,根据需要将数组分块增长,并调用RtlMoveMemory(kernel32.dll)来移动指针 主要的性能问题是 文档按从第1行到最后一行的顺序加载 鼠标移动需要找到一条线,通过它与文档顶部的“像素”偏移来调整鼠标光标 绘画需要通过偏移量找到一条线,并在下一条线中迭代 插入和删除操作不得耗时(换行) 我读了很多关于 SortedLi

我正在开发.NET版本的“文字处理器”控件,用于处理大型文档,这意味着打印时最多可打印10000页

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

主要的性能问题是

  • 文档按从第1行到最后一行的顺序加载
  • 鼠标移动需要找到一条线,通过它与文档顶部的“像素”偏移来调整鼠标光标
  • 绘画需要通过偏移量找到一条线,并在下一条线中迭代
  • 插入和删除操作不得耗时(换行)
我读了很多关于

  • SortedList:装载速度非常快,但插入速度如何
  • SplayTree:听起来不错,因为用户经常在同一行上移动鼠标,但如何从文档的底部滚动到中间呢
  • SkipList:听起来整体表现不错,但在高数据量的情况下会出现内存问题吗
  • SortedDictionary和AVL树:因顺序加载缓慢而不合格
  • 红黑树:没有最好的,但没有最坏的?这是最好的选择吗
这些结构是否能够在一百万个条目中表现良好? 如果是这样,最好的选择是什么

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


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

尝试列出的各种可能性有那么难吗?是的。这将是我有史以来第一次使用.NET。但你似乎很有经验,我本希望得到一个建设性的回答。谢谢如果您正在寻找用于文本处理的数据结构类型,请参见以下问题: