Thanks for all of your help! I followed that just fine.
I’ve implemented your pre-load the ETS table solution and load times of the app didn’t increase much that I could tell, so that’s good. The password checking now takes ~0.7s on my machine which is quite nice, and faster than the other two solutions I tried (~1.6s and ~1.1s respectively).
Keep in mind my time benchmarks come straight from a Phoenix app, so they include other unrelated tasks, and everything related to sending a new HTML page, etc.
Edit: I realized I should see how long the page takes to load without running this code. Apparently it takes the same ~0.7s with or without the validate_password_rarity
check, which makes sense.