Вместо кастомной виртуалки действительно можно заюзать WebAssembly - для него нет хороших декомпиляторов. Но с browser API и DOM там удобно не повзаимодействуешь.
Но клиентская обфускация имхо ещё будет долго жить. Так как есть задачи в которых важно исполнение кода именно на клиенте, а его действия желательно подольше оставлять в тайне.
Да, total с учетом компиляции мерил. Согласен по поводу отдельного замера компиляции, но исходя из последней таблицы - не такой уж большой объем 5 регулярок занимают в памяти)
Согласен, автор оригинального репозитория этот момент с Rust назвал "оптимизацией" )
Да и вообще, момент с компиляцией регулярок, тоже можно было бы не включать в замеры, если мы измеряем скорость нахождения. Но решил в Бенчмарке#1 оставить всё как было, лишь добавив аналогичный код для Go библиотек.
Подправил. Можете хоть тут на хабре запустить)
Вместо кастомной виртуалки действительно можно заюзать WebAssembly - для него нет хороших декомпиляторов. Но с browser API и DOM там удобно не повзаимодействуешь.
Но клиентская обфускация имхо ещё будет долго жить. Так как есть задачи в которых важно исполнение кода именно на клиенте, а его действия желательно подольше оставлять в тайне.
Спасибо, подправил)
Спасибо за детали касательно Hyperscan!
Да, total с учетом компиляции мерил. Согласен по поводу отдельного замера компиляции, но исходя из последней таблицы - не такой уж большой объем 5 регулярок занимают в памяти)
Вот обновленные результаты: в Rust включил unicode, в C перенес
strlen
.strlen
отнимает ~0.15ms в этом бенчмарке.Language | Email(ms) | URI(ms) | IP(ms) | Total(ms)
Rust | 11.66 | 1.70 | 5.13 | 18.48
C PCRE2 | 110.87 | 100.57 | 10.50 | 221.94
Согласен, автор оригинального репозитория этот момент с Rust назвал "оптимизацией" )
Да и вообще, момент с компиляцией регулярок, тоже можно было бы не включать в замеры, если мы измеряем скорость нахождения. Но решил в Бенчмарке#1 оставить всё как было, лишь добавив аналогичный код для Go библиотек.
Да, спасибо, что заметили) Добавил версии библиотек.
Касательно rure-go - компилилась растовская либа версии 1.9.3.