Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.net 为什么MemoryMappedFile.CreateViewAccessor的速度取决于映射的大小_.net_Memory Management - Fatal编程技术网

.net 为什么MemoryMappedFile.CreateViewAccessor的速度取决于映射的大小

.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

我在进程之间共享大文件时遇到性能问题。所有进程都是x64,我没有任何异常。但是,一旦文件变大,我注意到MemoryMappedFile.CreateViewAccessor的速度与请求视图的大小成线性关系。例如,对于5GB文件,在我的系统上是0.1秒

当使用本机PInvoked MapViewOfFile时,我没有注意到这种行为,尽管我不能100%确定,因为MapViewOfFile执行速度非常快(5GB为0.0002秒)。我使用.NET4.5.1


有人能解释一下这个问题吗:为什么CreateViewAccessor取决于视图的大小,为什么它比本机调用慢得多?

对此我一无所知,但有一个猜测:.Net的一个基本原则是,分配给程序的所有对象都归零,与以前的环境不同,在以前的环境中,分配给程序的内存可能包含以前的垃圾。所以,也许这是在为你调零5GB的存储空间?恐怕这一定是别的原因。实际上,我打开了一个已有的文件以供读取,其中已经包含数据。