запутывание сделает мою программу более оптимизированной - PullRequest
1 голос
/ 16 ноября 2011

Я реализую алгоритм шифрования DES с использованием C ++, я тестирую его на простом тексте очень большого документа (1,1 МБ).

У меня сейчас около 1,1 секунды на шифрование, мне нужно выжать большепроизводительность из этого.

Я думал об обфускации, поможет ли это в оптимизации моего кода?

Ответы [ 3 ]

8 голосов
/ 16 ноября 2011

Я думаю, что оптимизация вашего кода - лучший способ оптимизировать его:

  • Исправить избыточный код
  • Переосмыслите логику
  • Удалить неиспользуемые или тривиальные переменные
  • Хранение часто используемых значений в переменных для сокращения избыточных вычислений

Запутывание затрудняет чтение кода:

  • Замена имен переменных символами подчеркивания или одиночными буквами (компиляторы не используют имена переменных)
  • Удаление пробелов для создания нейтронной звезды с нечитаемым текстом (компиляторы делают это внутри)
  • Удаление комментариев (компиляторы не читают комментарии)
  • Иногда добавление бесполезного кода для дальнейшего затруднения читабельности (замедление работы программы)
2 голосов
/ 16 ноября 2011

Ну, вы не написали, какую обфускацию вы имеете в виду (на уровне исходного кода?), Но обычно: нет, это не будет .В таких языках, как Javascript (или очень старые интерпретируемые базовые диалекты), иногда запутывание и оптимизация идут рука об руку (сокращение имен переменных, удаление ненужных пробелов / отступов и т. Д.), Но не в скомпилированном языке, таком как C ++.

Конечно, иногда какая-то неправильная оптимизация приводит к запутанному коду, но это совсем другое.

0 голосов
/ 16 ноября 2011

C ++ компиляторы в настоящее время действительно ДЕЙСТВИТЕЛЬНО умны. Основные оптимизации происходят на макроскопическом уровне. Даже пример Блендера, удаляющий неиспользуемые переменные, не нужен, так как оптимизатор все равно их удалит.

Запутывание не делает ваш код умнее, оно не меняет алгоритмы, не вводит динамическое программирование или что-то в этом роде.

Я не понимаю, почему вы этого хотите. В случае скомпилированных языков вам не нужно отправлять исходный код, вы можете, при необходимости, отправлять заголовки и библиотеки, но они не предоставляют подробности реализации.

...