C# 内存映射研究学习

 class Program {
        static void Main(string[] args) {
            int size = 512;
            int position = 0;
            MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile("1.mmf", FileMode.OpenOrCreate, "1", size);  //创建一个内存映射文件
            MemoryMappedViewAccessor mmva = mmf.CreateViewAccessor(0, size); //创建一个视图,提供操作途径,操作的时候不经过IO,直接扔给底层系统
            Console.WriteLine("硬盘文件中的原始值====");
            for (int i = 0; i < 12; i++) {  //展示数据
                Console.WriteLine(mmva.ReadByte(i));
            }
            Console.WriteLine("开始尝试操作==========");
            mmva.Write(position, 255);  //写一个字节的数据255(byte)
            position++; //偏移位置,避免覆盖其他的数据
            mmva.Write(position, 0);
            position++;
            mmva.Write(position, 0);
            position++;
            int num = new Random().Next(int.MinValue, int.MaxValue);
            mmva.Write(position, num); //写4个字节的随机(int)
            position += 4;
            byte[] bs = new byte[] { 1, 2, 3, 4 }; //再写4个固定的byte数据
            mmva.WriteArray(position, bs, 0, bs.Length);
            for (int i = 0; i < 12; i++) {  //展示数据
                Console.WriteLine(mmva.ReadByte(i));
            }
            Console.ReadKey();
        }
    }

所谓内存映射就是指定一个文件,然后把这个文件映射到内存中,然后使用操作的时候就能省去很多事,直接把数据扔给底层系统处理,这样读写就会很快,用来保存大量的数据就很爽,而且一个文件貌似可以用多个视图操作,所以这个技术可以作为不同进程之间的数据共享手段

最近发现,这个内存映射好像并么有比FileStream操作快,反而变慢了,不知道是什么鬼

原文地址:https://www.cnblogs.com/luludongxu/p/13446610.html