From experience we saw that for most people doing the coding test was only taking ~an evening which seems reasonable as it removes the need for more on site discussions.
I guess that it's true that the take home assignment is not optimal if you interviews with more than 10 companies and in this case we must be loosing some candidates.
They lie. Most candidates will tell you the coding exercise took less than it actually did because
1) they want to appear efficient
2) you said it would take only 3 hours so if they say it took 8 hours it would look like a failure
Source: me, last week, for another company.
Plus, programming is not just writing code, most technical interviewers will want to see the global design, unit tests, comments, etc... Which are not accounted for in the expected time
I guess that it's true that the take home assignment is not optimal if you interviews with more than 10 companies and in this case we must be loosing some candidates.