我们有一个应用程序,它通过 Azure 文件列出文件夹中的文件。当我们使用 C# 方法时:
Directory.GetFiles(@"\\account.file.core.windows.net\xyz")
当有 2000 个文件时,大约需要一分钟。
如果我们使用 CloudStorageAccount 来做同样的事情:
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileDirectory directory = fileClient.GetShareReference("account").GetRootDirectoryReference().GetDirectoryReference("abc");
Int64 totalLength = 0;
foreach (IListFileItem fileAndDirectory in directory.ListFilesAndDirectories())
{
CloudFile file = (CloudFile)fileAndDirectory;
if (file == null) //must be directory if null
continue;
totalLength += file.Properties.Length;
}
它返回所有文件,但大约需要 10 秒。为什么性能差异如此之大?