Выполняет ли запутывание программы Java на ее производительность (исключая переименование вещей)?Обфускация влияет на производительность?
ответ
Нет. Обфускация просто заменяет ваш разумно названный код на erneadable. В некоторых случаях (в качестве примера при использовании ProGuard, наш код может даже быть «оптимизированы», удалив все ненужные блоки кода (например, if(false)
и Двойник заявления).
EDIT (уточнить идеи Magesh) .
При использовании обфускатора (и НЕ обфускации вручную, что не является хорошей идеей), он будет загружать ваши классы и встроить некоторые методы или кодовые блоки (например, вышеупомянутые if), чтобы упростить код для полученных больших блоков В результате существует меньше вызовов методов, требующих меньше использования стека, а затем скрепления приложения.
Другое дело obfuscator обычно делает это для переименования всех переменных из mySmartVariable
в a$a$a
, что делает невозможным декомпилирование (поскольку декомпилятор java считает $
символом, используемым для идентификации внутренних и анонимных классов, а не переменных).
Определенно да: за исключением простейшего случая, когда только имена идентификаторов скремблируются, это зависит только от того, насколько влияет производительность. Более подробно, например, here, общая информация об методах обфускации доступна в статье Википедии Obfuscated code.
Если вы добавили избыточный код, который никогда не проходил, нет. Если вы добавите логику, которая должна быть пройдена при нормальном выполнении вашего кода, тогда да, это повлияет на производительность. Насколько зависит от того, какую нелогичную структуру вы пытались добавить в путаницу, будут программные пираты.
Иногда, да. В Java ME («версия мобильного телефона» Java), обфускация работает на скомпилированном байт-коде и, между прочим, заменяет имена короткими, автогенерируемыми. Это приводит к сокращению байтового кода, что, по крайней мере, ускоряет загрузку приложения по сети.
В общем, обфускация путем переименования переменных, методов и классов в более бессмысленные имена не влияет на производительность. Некоторые производители программного обеспечения для обфускации даже утверждают, что помимо обфускации также увеличивается производительность на 30%. Хотя я никогда не тестировал эти утверждения, никогда не видел их доказанными, и поэтому им трудно поверить.
Однако имейте в виду, что некоторое программное обеспечение также позволяет обфускации потока: добавление бессмысленных циклов управления к операторам, поэтому сложнее выполнить код. То, что делает, отрицательно влияет на производительность, хотя и небольшая.
Интересный момент (действительно, не шутка здесь), Razzie. Интересно, что представляет интерес, поскольку, когда вы включаете обфускацию, вы считаете свой код враждебными руками, которые могут использовать инструменты анализа кода для удаления пустых методов и встроенных 1-так называемых методов ... – Riduidel
Хорошие обфускаторы могут создавать совершенно нечитаемый код, используя goto's и другой мусор, в результате чего код, который очень сложно декомпилировать (хорошо). Тем не менее, это связано с штрафом за производительность. Взгляните на http://www.excelsior-usa.com/articles/java-obfuscators.html#performance, интересное чтение. – Razzie
- 1. Как setInterval() влияет на производительность?
- 2. Как макроопределение влияет на производительность?
- 3. Класс влияет на производительность создания
- 4. does setTimeout() влияет на производительность
- 5. Как Object.observe() влияет на производительность?
- 6. Что влияет на производительность на odbc_fetch_array()
- 7. Прозрачность в макете Android влияет на производительность?
- 8. Как многословие идентификаторов влияет на производительность программиста?
- 9. Ящик-тень влияет на производительность шкалы
- 10. Функция Asp.net OnItemDataBound влияет на производительность?
- 11. Число столбцов влияет на производительность запросов?
- 12. Удалить влияет на производительность моей базы данных?
- 13. UILabel layer cornerRadius отрицательно влияет на производительность
- 14. Учет сложных индексов индекса влияет на производительность?
- 15. Redis: Как «mem_fragmentation_ratio» влияет на производительность?
- 16. Что влияет на производительность рендеринга страницы браузера?
- 17. Как django SESSION_SAVE_EVERY_REQUEST = Истинно влияет на производительность?
- 18. Влияет ли количество пространств имен на производительность?
- 19. Does node.js cron влияет на производительность системы
- 20. Влияет ли импорт модуля Python на производительность?
- 21. Javascript Object Вес/размер влияет на производительность
- 22. Соотношение сторон текстуры OpenGL влияет на производительность?
- 23. Производительность процессора влияет на GZIP IIS?
- 24. Свойство свойства OrderBy влияет на Производительность
- 25. Как размер файла влияет на производительность?
- 26. Как NUMA-архитектура влияет на производительность ActivePivot?
- 27. Влияет ли число удаленных запросов на производительность?
- 28. Влияет ли порядок SQL JOIN на производительность?
- 29. Местоположение процессора Intel __assume влияет на производительность
- 30. CAShapeLayer скругление углов влияет на производительность
, но добавление пустых методов может привести к его замедлению вправо? – 2010-03-16 13:11:28
@Magesh Удаляет, не добавляет бесполезных блоков кода. –
@ Джеймс, не всегда, см. Мой ответ. Некоторое программное обеспечение добавляет бессмысленные потоки управления, поэтому код намного сложнее читать, например. обфускация потока. Это действительно влияет на производительность, хотя и мала. – Razzie