4 ms·
I just tried to match a URL against about a hundred patterns of various types (thanks to Claude code), expecting it to be a non-issue. A hundred regex tests, f
by BiteCode_dev 9mo ago
I just tried to match a URL against about a hundred patterns of various types (thanks to Claude code), expecting it to be a non-issue.
A hundred regex tests, for example, is generally very fast. A quick Python script made them run in 0.85ms. A hundred Flask router tests is 2.64ms.
So I had no reason to think this API would be slow. Surely matching a URL is a subset of generalized regexes and can only be fast? And given that routing is not an activity you do a lot, why would it matter anyway?
But the performances were atrocious: it took 8 seconds to resolve the worst-case scenario on Firefox, and it locked the entire browser UI.
Ok, note to self, stay away from the URL Pattern API.
- creatonez 9mo ago...Eight seconds for a hundred matches? What does your code look like?
- BiteCode_dev 9mo agoMy bad, I should not read AI generated code while drunk at a xmas party. That's the total run time for 10000 iterations. Average time for 100 tests is hence 0.8 ms. Completely normal, and absolutely acceptable, especially for an operation as rare as routing. Letting my previous comment as-is for historical purposes. And to remind myself I'm a dumbass.
- elcritch 9mo agoIn the near future I fear there may be laws about “LLMing while drunk” after enough rogue LLM agents vibe coded while drunk cause widespread havoc. You know folks harassing exs or trying to hack military depos to get a tank. Actually that’d be a fun sci-fi book.
- saghm 9mo agoFor what it's worth, quite a lot of libraries don't use NFA/DFA style regexes and instead use something like PCRE, which aren't not necessarily linear in the worst case. I'd hope that URL pattern matching wouldn't need recursive backtracking or whatever, but probably quite a lot of the time people use libraries with the less performance implementations they're not intending to use those features either, so it probably wouldn't be the first time anyone accidentally make their matching way slower from this if that's what happened here.