Well, the print function uses same technique of gfx fonts; actually it caches all calls with different colors when you call it with a new one, then it creates several font-set and finally it's drawed like a gfx font.
So there shouldn't be any overhead (caching time is very fast).
Be aware, if you 'print' a small text but with several different hundred colors, it will have to cache lot of font-set so you may experience slowdowns and higher memory requirements; for example this should be avoided:
Code:
function onmainloop()
print(10,10,"my cool flashing text", math.random(255), math.random(255), math.random(255))
end
If you print "hello" with a 5x5 font or 50x50 font, you'll have same script processing overhead, but, of course, the 50x50 one will have higher gfx overhead because the higher area to draw.
This doesn't means that printing 10000 small chars with 'print' will be always good (usually not).
My suggestion is to keep font output and, in general, all draw steps reduced to minimun possibile, then testing performances live on your devices
