I have blocking sqs listener , which fetch message from sqs , do some processing (may be message validation or enrichment) , store the procesed message in the DB, clean up the message from sqs. I am planning to write this whole sqs listener in non blocking way using Kotlin coroutines. My question is that how can I measure performance (throughput, cpu usage, thread usage) between my old approach and new coroutine based approach??