3 seconds sounds like an awful long time. I seem to read my sensor and once a second or so as I recall. There are only minimal pauses in the code and those add about 48 ms total. If it's taking longer than that I have no idea why.