我刚刚发现我的程序在通过 dotfuscator 社区版时执行速度降低了 5%。
这正常吗?dotfuscator 的替代品(免费)是什么?
是的,这是混淆的副作用。可能还有一些其他的,比如 Salamander,可以提供更好的性能,但这是混淆的副作用。
混淆器所做的其中一件事是混淆代码中的文字,尤其是文字字符串。这些文字必须在运行时不混淆。字符串处理不是特别快。
由于您使用的是免费版本的 Dotfuscator,它只执行重命名,因此您的性能问题很可能与字符串文字混淆的任何开销无关(因为该功能不在该版本中)。
如果您正在使用序列化并且在混淆它们之前在您的程序集上运行 sgen,并且不包括可能导致性能问题的 sgen 程序集。
由于较小的二进制大小和减小的字符串表大小,重命名本身对性能提升通常是性能中立的。我建议的一件事是在混淆程序上运行分析器并尝试找到热点,这些热点可能会给你一些线索,进入可能包含问题线索的区域。