First, I'm fairly sure that the cron job would take more overhead than the simple sleep loop.
Second, if the job is being run once every 20 seconds, the difference in overhead won't matter at all.
Third, if the interval itself is critical, don't sleep for 20 seconds, but sleep for as long as it takes to start the job 20 seconds after the last time it started.
Fourth, when I read the man page for crontab I don't see any granularity finer than one minute.
Hope this helps.