1

我尝试在 F# 中构建一个非常非常小的 .NET 应用程序。

它只需要将一个小字符串转换为另一个字符串并将结果打印到控制台,如下所示:

convert.exe myString ==> 打印类似“myConvertedString”的内容

我使用dottrace来分析性能:

  • 26% (168ms) 在我的实际字符串转换中(我认为这没问题。)
  • System.Security.SecurityManager 中的 ResolvePolicy 65,80% (425ms)

每次执行的运行时间 > 500 毫秒太慢了。我可以做些什么来改善这一点吗?

如果这次只需要第一次通话就可以了。

问候,叉子

4

3 回答 3

7

您是否必须将其作为每个字符串的单独进程运行?

你能传入一个包含很多字符串的文件名吗?在以下方面,这将大大提高效率:

  • 启动流程所需的时间
  • 加载 .NET 的所有不同部分所花费的时间
  • JIT 代码所花费的时间
  • 解决安全策略所需的时间
于 2010-03-17T11:08:47.573 回答
1

您可以使用caspol.exe关闭代码访问安全检查。

于 2010-03-17T11:08:28.120 回答
1

您可以尝试预编译程序集。使用 ngen 程序可以将 .net 程序集编译为机器代码,然后将程序集安装在全局程序集路径中。这应该加快应用程序的加载时间

于 2010-03-17T11:33:23.150 回答