as written, this creates timers which would run the socketalias at 5 second intervals for the next 500 seconds, but the write command would execute 100 times immediately. If you change the pipe into $(|) it would put the /write as part of the alias.
A better way would be to have a timer do 100 repetitions at 5 sec intervals:
timer 100 5 socketalias $!read(nicklist,1) $(|) write -dl1 nicklist
using $!read makes it wait until the timer executes to evaluate the identifier, instead of using whatever is the #1 nick as the timer is created. i.e.
//timer 5 1 echo -a $asctime
vs
//timer 5 1 echo -a $!asctime
Edit: The act of launching 100 timers at the same time is not causing the delay. The /write might be causing the delay due to your AV program. Try the alias to see if your AV is causing the problem.
https://forums.mirc.com/ubbthreads.php/topics/260678/Windows_8.1_/write_very_very_v#Post260678