TLDR: About 60.5 to 60.8 blocks per second.
I made a command block setup that tracks the current velocity of an arrow by comparing its current
Pos NBT tag to the one 1 game tick ago, with a scale factor of 1000000, and save the maximum value over time. Then I used
/tp to align myself exactly to one of the six axis directions and shot multiple arrows at full power. The results:
- positive X: 3024556, meaning 60.49112 blocks/second
- negative X: -3034233, meaning 60.68466 blocks/second
- positive Z: 3040980, meaning 60.8196 blocks/second
- negative Z: -3036883, meaning 60.73766 blocks/second
- positive Y: 3028972, meaning 60.57944 blocks/second
The exact number probably depends on when exactly in the 0.05 seconds I shot the arrow.
Negative Y is a bit of a different story, because the arrow speeds up while going downwards. I can easily get the terminal velocity of a falling arrow shot down (about 100.2 blocks/second, faster than a sheep), but getting the starting value is difficult. I tried giving the arrow
NoGravity:1 as soon as it was shot and setting the maximum upwards velocity scoreboard to -2147000000 and then checking the maximum upwards velocity (which is negative, because downwards) and just relied on the first tick being the slowest. That, after multiple tries, gave me at most a speed of 3025818, meaning 60.51636 blocks/second. But it was probably already affected by gravity, air resistance or whatever, so it's not necessarily absolutely correct.
The maximum of all of these values is 60.8196, the average is 60.63814, 60.662496 without downwards, 60.68326 without upwards and downwards.