我正在努力解决问题,我使用的代码与从WebJob迁移到Function的代码相同,其中一部分从存储中获取一堆Blob,并将它们拼接在一起,代码主要是CPU工作,而不是在循环中从存储中获取Blob时。从存储中检索Blob时,该函数的运行速度提高了5倍,使用的代码是:
WebJob(不是异步)
var cloudStream = new MemoryStream();
container.GetBlockBlobReference(blobPath).DownloadToStream(cloudStream);
cloudStream.Seek(0, SeekOrigin.Begin);
功能(异步)
var cloudStream = new MemoryStream();
await container.GetBlockBlobReference(blobPath).DownloadToStreamAsync(cloudStream);
cloudStream.Seek(0, SeekOrigin.Begin);
我最初以为是Nagle算法,但在WebJob中将其设置为false毫无用处。两者都使用Azure存储库的7.2.1,所以我不知道为什么一个(函数)快大约4-5倍;为什么?我都在本地调试中运行它们。
任何关于我可能会缺少的想法的想法,肯定异步不会带来太大的改变吗?我唯一想到的可能是某些App Insights跟踪正在降低它(WebJob)的速度,因为我知道函数当前不跟踪依赖项?我在代码的两边都将秒表放在webjob中,经过的ms似乎与调试msg之间的时间不一致,或者我认为这很奇怪?
函数中针对同一文件的相同调试是: