小编Dav*_*vid的帖子

为什么C++ fseek/fread的性能比C#FileStream的Seek/Read要大

我做的很简单:

  1. 有一个大文件,其中包含大小为〜6Gb的随机二进制信息
  2. 算法循环"SeekCount"重复
  3. 每次重复都在执行以下操作:
    • 计算文件大小范围内的随机偏移量
    • 寻求抵消
    • 读取小块数据

C#:

    public static void Test()
    {
        string fileName = @"c:\Test\big_data.dat";
        int NumberOfSeeks = 1000;
        int MaxNumberOfBytes = 1;
        long fileLength = new FileInfo(fileName).Length;
        FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 65536, FileOptions.RandomAccess);
        Console.WriteLine("Processing file \"{0}\"", fileName);
        Random random = new Random();
        DateTime start = DateTime.Now;
        byte[] byteArray = new byte[MaxNumberOfBytes];

        for (int index = 0; index < NumberOfSeeks; ++index)
        {
            long offset = (long)(random.NextDouble() * (fileLength - MaxNumberOfBytes - 2));
            stream.Seek(offset, SeekOrigin.Begin); …
Run Code Online (Sandbox Code Playgroud)

c# c++ performance filestream

5
推荐指数
1
解决办法
2866
查看次数

标签 统计

c# ×1

c++ ×1

filestream ×1

performance ×1