I made long (as possible) archery ranges before. Marksdwarves seemed to only get exp when they hit the target (or at least, the other end of the range--it was a narrow hallway) though I had no way of checking, but it seemed to be more effective (training them to hit faraway targets and they can do it better).
That works? Well all my short archery ranges are going to have to get scrapped. Well, maybe in my next fort. I'm suffering from a critical bone and wood shortage after I pissed off the elves, since there are no fish, no trees and nothing to hunt but Giant Eagles in my current fort, so anything that makes them train faster but take more bolts to do it isn't so useful.
Related: Why do they have to use stone targets anyway? Why can't I get straw as a byproduct of milling and use it to make straw faced archery targets, so the bolts can be reused? It'll have to wait until stack handling is fixed so turning groups of single bolts back into stacks is viable. Maybe a system where arrows degrade with use depending on the Damblock of what they hit (stone and metal constructions will need a virtual Damblock that's set to a very high number) and the damage modifier of the material they're made out of, and archery targets getting an artificially low Damblock. Arrows that degrade enough are destroyed. XXIron BoltsXX and similar should be used for training if better quality metal bolts are available. It seems unlikely that a metal arrow that hit an unarmoured animal wouldn't have a high chance of being usable after being pulled out, and that Adamantine Bolts won't get bent or lose their edge even after passing through steel armour.