0

由于某种原因,我最近不得不记录写入文件所需的时间。我在 Azure VM 上的 Windows Server 2012 上执行此操作。当我查看日志时,大部分时间都是 0 ms,只有极少数是 15.something ms。我以为我在测量时做错了,并用这段代码进行了测试:

class Program
{
    static void Main(string[] args)
    {
        string dir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) + "\\TEST";
        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
        }

        for (int i = 0; i < 10; i++)
        {
            DateTime start = DateTime.Now;
            File.WriteAllText(dir + @"\test.txt", "test");
            DateTime end = DateTime.Now;
            TimeSpan duration = end - start;
            double ms = duration.TotalMilliseconds;
            File.AppendAllText(dir+@"\log.txt", Convert.ToString(ms) + System.Environment.NewLine);
        }
    }
}

在我的 PC 上输出(操作系统区域设置为德语,因此逗号是小数点,而不是千位分隔符,使第一个数字为 5 毫秒):

5,0037 1,001 0,9976 1,001 1,001 2,002 0,9956 2,002 1,0003 0,9996

远程机器上的输出:

0 0 0 0 0 0 0 0 0 0

有时(操作系统区域设置为英语,所以点是小数点,使相关数字为 15.5 毫秒):

0 0 0 0 0 0 15.4914 0 0 0

这是什么原因?这是 Windows Server 2012 或 Azure VM 上的一些写入缓存吗?

附加信息:

  • 我的 PC 有一个 SSD,远程机器在不同的驱动器上配置了操作系统和数据(不确定是什么类型)
4

1 回答 1

0

你在什么驱动器上测试这个?操作系统驱动器/临时驱动器/附加驱动器......这很重要。正如您提到的缓存设置也很重要,最好从连接的驱动器开始并且没有缓存。

驱动器的 ALU 格式大小很重要。例如,如果您将文件分块为 64kb 块并具有 64kb 读取/写入速度,则速度会更快。

存储帐户上的 Azure 驱动器有 20 分钟的预热阶段,在此阶段它们可以“缓慢”单元化或 20 分钟不使用。

于 2013-10-31T00:43:36.367 回答