通过混淆来降低性能?

时间:2017-06-29 07:33:01

标签: performance obfuscation

我已经读过很好的混淆技术,不仅仅是用一些模糊的东西替换方法名称,而且还要用源代码替换字节数组中的字符串,并添加方法将这些字符串转换回原始字符串。

这可能是导致基于意见的答案的问题之一,但无论如何我都要问:在应用这种混淆方法的情况下,应用程序会遭受多大的性能损失?我想到了一个严重依赖于数据库的软件,即代码中存在查询,例如,作为C#stringStringBuilder实体。

1 个答案:

答案 0 :(得分:0)

是的,字符串混淆在微观层面上会对性能产生重大影响。使用模糊处理,而不是直接内存查找,您必须执行(每次)代码,并且通常有些复杂,因此在微观性能级别上必然会更糟。

但是,这笔费用通常无关紧要;数据库调用(或显示UI对话框,或将错误发送到日志,或网络流量,或......)所需的时间将比转换字符串的成本高出几个数量级。在大多数情况下,转换的成本基本上是不可见的。

与所有内容一样,仔细测试是明智的,但如果您在已经对CPU性能敏感的紧密循环中访问混淆的字符串,通常成本只是“可见的”。