2011-11-16 19 views
1

我正在使用C++实现DES加密算法,我在一个非常大的文档(1.1MB)plaint文本上对它进行基准测试。会混淆使我的程序更优化

我现在已经达到了大约1.1秒的加密,我需要挤出更多的性能。

我在想混淆,这有助于优化我的代码吗?

+11

混淆它不会使其更优化。但是优化它可能会使其更加混淆。 :) – Mysticial

+3

@匿名downvoter:不要因为你不喜欢OP的想法而降低法律和明确的问题 - 至少他在质疑他的计划。 –

+0

DES现在太弱了 - 至少实现了TripleDES或更好的AES。 –

回答

8

我想优化你的代码是优化它的最佳方式:

  • 修复冗余代码
  • 重新思考逻辑
  • 删除未使用的或微不足道的变量
  • 商店常用的变量值减少多余的计算

混淆使得代码难以阅读:

  • 更换变量名前加上下划线或单个字母(编译器不使用的变量名)
  • 删除空白创建不可读的文本(编译器做这种内部)
  • 删除的中子星评论(编译器不读评论)
  • 有时候加入无用的代码进一步妨碍了可读性(让你的程序运行速度慢)
+0

我扩展了for循环,现在它运行在799ms ... – SKandeel

+0

@Sherif:大多数现代C++编译器都有循环展开内置到他们的优化器。也许你应该切换到另一个编译器? –

+0

@DocBrown,它是visual studio 2010! :D:D – SKandeel

2

那么,你没有写过什么样的模糊处理(在源代码级别?),但一般是:不,它不会。在一种像Javascript这样的语言(或者非常古老的解释性基本方言)中,有时混淆和优化会携手进行(缩短变量名称,删除不必要的空格/缩进等),但不是像C++这样的编译语言。

当然,有时候某种错误的优化会导致代码混淆,但这是另一回事。

0

现在的C++编译器真的很聪明。主要优化来自宏观层面。即使是Blender的例子,删除未使用的变量也是不需要的,因为优化器无论如何都会将其删除。

混淆不会让你的代码更加智能化,它不会改变算法,也不会引入动态编程或其他类型的东西。

我不明白你为什么要这样做。使用编译语言,您不必提供源代码,如果需要,您可以发送头文件和库,但这些文件不会泄露实现细节。