如何为CPU优化编译一个.net应用程序

本文关键字:一个 net 应用程序 CPU 优化 编译 | 更新日期: 2023-09-27 18:04:00

我有一个。net c#应用程序,应该只能在一台已知配置的计算机上运行(HP DL120 G7, Xeon E3-1220, Windows Server 2008 R2 Foundation,如果这很重要的话)。我不需要在其他电脑上运行这个应用程序。

我想:

  • 使其尽可能快(即可能用"使用Xeon E3-1220"键或其他东西编译?)
  • 保护它一点(从二进制文件恢复c#源代码不应该是微不足道的)。

我应该以某种方式编译为本机Windows代码吗?也许我应该使用一些特殊的编译器选项?

如何为CPU优化编译一个.net应用程序

您可以在"发布"模式下编译它以启用优化。此外,您可以运行ngen.exe来生成本机dll,这将不会导致JIT的开销。

然而,请记住,所有这些度量和工具都不是针对编写糟糕的代码的灵丹妙药(并不是说您的代码是)。你应该分析你的应用程序,看看你是否可以即兴执行任何代码路径的时间,以及找出较慢的路径(并寻求改进它们)。

为了保护它,使用一个好的混淆器,如(Salamander, SmartAssembly等)。它不会完全无法识别,但它会使它变得更加困难。

绝对 安全,用c++编写!您可以使用/clr选项编译它,这将使它们不受反射和反汇编的影响。

从。net程序集恢复代码很容易。你可以通过混淆内容(谷歌搜索)。

至于编译,CLR会在进程启动时有效地编译它——你不应该担心这个。如果启动时间很长,可以使用ngen (AOT编译器)来编译程序集:

http://en.wikipedia.org/wiki/Native_Image_Generator

如果你想确保它是快速的,确保你在发布模式下编译,优化(它将在你的项目属性)。

您可以使用ngen来创建和缓存程序集的优化本机映像。