Yes, below is the faster approach to follow.
I don't know if that helps, but have you tried creating a template database
and doing DROP DATABASE xxx; CREATE DATABASE xxx TEMPLATE mytemplate;
instead of restoring a dump every time?
Maybe that is faster.
If you are trying to take the dump from one cluster and restoring it in another cluster, then make sure your pg_restore use parallel option "-j" and also follow the parameters what Raghav said and tune WAL_BUFFERS to some 32 to 64 MB value. And also if possible, keep your dump file into another partition than the PGDATA which can improve the I/O balance.
Thanks.
Best Regards,
Dinesh