如果您感兴趣,SO这里也问了一个类似的问题,但是正如我们将看到的,那个问题的被接受答案并不总是适用(对我的应用程序使用模式从未适用)。
性能决定代码由FileStream构造函数(打开文件)和SHA1哈希(.Net框架实现)组成。该代码几乎是我上面链接到的问题所要求的C#版本。
情况1:应用程序第一次启动或第N次启动,但设置了不同的目标文件。现在要求应用程序计算以前从未访问过的文件的哈希值。 - ~50ms - 80%的FileStream构造函数 - 18%的哈希计算
情况2:现在完全终止应用程序,并再次启动,要求在相同的文件上计算哈希值: - ~8ms - 90%的哈希计算 - 8%的FileStream构造函数
问题: 我的应用程序始终处于使用Case 1状态,永远不会被要求重新计算已经访问过一次的文件的哈希值。 因此,我的速率限制步骤是FileStream Constructor!我能做些什么来加快这种使用情况吗?
谢谢。
注:使用JetBrains分析器收集了统计信息。
性能决定代码由FileStream构造函数(打开文件)和SHA1哈希(.Net框架实现)组成。该代码几乎是我上面链接到的问题所要求的C#版本。
情况1:应用程序第一次启动或第N次启动,但设置了不同的目标文件。现在要求应用程序计算以前从未访问过的文件的哈希值。 - ~50ms - 80%的FileStream构造函数 - 18%的哈希计算
情况2:现在完全终止应用程序,并再次启动,要求在相同的文件上计算哈希值: - ~8ms - 90%的哈希计算 - 8%的FileStream构造函数
问题: 我的应用程序始终处于使用Case 1状态,永远不会被要求重新计算已经访问过一次的文件的哈希值。 因此,我的速率限制步骤是FileStream Constructor!我能做些什么来加快这种使用情况吗?
谢谢。
注:使用JetBrains分析器收集了统计信息。
FileStream
源代码来看,似乎有大量的预处理指令,即使在最简单的路径中,初始化也似乎相当复杂。您可能需要指定您遇到问题的特定构造函数以及您的环境,并希望比我聪明得多的人可以帮助您。 - Griswald_911FileOptions.SequentialScan
打开文件?您是否尝试通过ProfileOptimization.StartProfile
启用多核jit? - antiduh