A more efficient matching engine for HTTPS Everywhere
remusao.github.io
remusao.github.io
I see this all too often... Some bit of code is slow, so a project is started to rewrite it more efficiently. Along the way, a bit of scope creep happens, and the final result is slower than the original. Since so much effort has been invested into it, it gets deployed anyway.
The fact is, most scripting languages are written using a compiled one, often C, under the hood.
And those implementations have been optimized for decades.
A lot of hot loops are such because of complex sorting, filtering, and so on, and those are quite hard to do right.
Hence, it's possible to write a way slower implementation using C manually than using the automatic way in Python or JS, not to mention the later has a very good JIT.
If you add the fact some code may use crazy fast libs (like numpy in Python), then you may end up in a situtation where you have to really know what you are doing to implement a faster version.
However, somebody knowing what they are doing would measure and find the bottle neck first before talking of a rewrite, and suggest it only if it's worth it.
Which it can be, of course. Mercurial, Dropbox and Youtube are all good stories about it.
But the junior thats been tasked to improve the UX is probably not the best to advice you on the matter.
The only cases where it becomes somewhat problematic for me is my router page and local jupyter notebooks. Both can be served through other means.
It's used to create the host list for HTTP4All, my unofficial port of HTTPS Everywhere to iOS https://itunes.apple.com/us/app/https4all/id1305430042?mt=8
Out of curiosity, how did you handle exclusions? Also, are you generating one "block list" per ruleset? Or merging them into a single blocklist?
No need for an additional addon unless you need to handle specific exceptions.