The UserSync job can last several hours in case there are many people records (in customers case there are 30k records).
The UserSync job uses a "GetReportingUsers" step which is a user defined java class and obviously fetches the users from the smart reporting server.
However the SmartReporting users could also be fetched using a table input step querying the SmartReporting database which is much faster and hence reduces the runtime of the job.
During installation you have to provide the credentials for the smartreporting database hence the table input connection could be created aswell. Another way would be to store these credentials in a backend form and pass the values to the job as variables for more flexibility.