.net 为什么MemoryMappedFile.CreateViewAccessor的速度取决于映射的大小
我在进程之间共享大文件时遇到性能问题。所有进程都是x64,我没有任何异常。但是,一旦文件变大,我注意到MemoryMappedFile.CreateViewAccessor的速度与请求视图的大小成线性关系。例如,对于5GB文件,在我的系统上是0.1秒 当使用本机PInvoked MapViewOfFile时,我没有注意到这种行为,尽管我不能100%确定,因为MapViewOfFile执行速度非常快(5GB为0.0002秒)。我使用.NET4.5.1.net 为什么MemoryMappedFile.CreateViewAccessor的速度取决于映射的大小,.net,memory-management,.net,Memory Management,我在进程之间共享大文件时遇到性能问题。所有进程都是x64,我没有任何异常。但是,一旦文件变大,我注意到MemoryMappedFile.CreateViewAccessor的速度与请求视图的大小成线性关系。例如,对于5GB文件,在我的系统上是0.1秒 当使用本机PInvoked MapViewOfFile时,我没有注意到这种行为,尽管我不能100%确定,因为MapViewOfFile执行速度非常快(5GB为0.0002秒)。我使用.NET4.5.1 有人能解释一下这个问题吗:为什么CreateV
有人能解释一下这个问题吗:为什么CreateViewAccessor取决于视图的大小,为什么它比本机调用慢得多?对此我一无所知,但有一个猜测:.Net的一个基本原则是,分配给程序的所有对象都归零,与以前的环境不同,在以前的环境中,分配给程序的内存可能包含以前的垃圾。所以,也许这是在为你调零5GB的存储空间?恐怕这一定是别的原因。实际上,我打开了一个已有的文件以供读取,其中已经包含数据。