Iven,
Using the e_reset_system() API inside a tight loop is not the way to go. If you need quick cycles of program restart - then don't exit the program in the first place. Make it a "service" that runs in an infinite loop, waiting for a signal from the host to start crunching. The cost of writing a value to a mailbox on the core is the same as if writing the SYNC signal by e_start().
That said, there is also the e_reset_core() API that is faster (does not have the delay of the system reset), but is less safe in certain situations, and in addition, is required to be activated on each core in the group. BTW, if you want to reset a workgroup, then e_system_reset() is not appropriate anyway, as it will terminate whatever processes running on other workgroups.