I just wrote a package that may do what you need in runtime.
It's not in METADATA yet, since I'm not sure if its implementation is kosher. (There's a trick of generating new generic functions at runtime within the module name space).
Speed is decent (within 30% of standard macro). You can run the test script to see the difference on your machine.
After you clone it, you can try
using NumFormat
format( 12345678, commas=true) # method 1. slowest, but easiest to change format in a readable way
sprintf1( "%'d, 12345678 ) # method 2. closest to @sprintf in form, so one can switch over quickly
f = generate_formatter( "%'d" ) # method 3. fastest if f is used repeatedly
f( 12345678 )
Tony