最近、何らかの理由でファイルの書き込みにかかる時間を記録する必要がありました。これは、Azure VM 上の Windows Server 2012 で行いました。ログを見ると、ほとんどの時間は 0 ミリ秒で、15 ミリ秒だったのはごくわずかでした。測定に何か問題があると思い、次のコードでテストしました。
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 での出力 (OS ロケールがドイツ語に設定されているため、コンマは桁区切り記号ではなく小数点記号であり、最初の数値は 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
また、場合によっては (OS ロケールが英語に設定されているため、ポイントは小数点であり、関連する数値は 15.5 ミリ秒になります):
0 0 0 0 0 0 15.4914 0 0 0
その理由は何ですか?これは、Windows Server 2012 または Azure VM の書き込みキャッシュですか?
追加情報:
- 私の PC には SSD が 1 つあり、リモート マシンは OS とデータが別々のドライブにあるように構成されています (種類がわからない)