I'm moving over to this feedback tracker so I will apologise beforehand for inconvenience
I measured the rate of fire for many guns and they all seem to be falling within 600-630 RPM. M16 CARBINE, AK-74, SA. 58, M249, even the UK-59L.
Here are my measurements:
M16 CARBINE 622RPM | wiki says 700-950
AK-74 613 RPM | wiki says 650 RPM
AKS-74U 620 RPM | wiki says 700 RPM
PKM 605 RPM | wiki says 600-800 RPM
SA-58 618 RPM | wiki says 800 RPM
RPK-74 544 RPM | wiki says 600 RPM
UK-59L 616 RPM | wiki says 700-800 RPM
M249 602 RPM | wiki says 850 RPM
M60 453 RPM | wiki says 550-650
I recorded 60fps gameplay of me shooting various guns. I had projectile tracing turned on. I aimed at the sky, and my FPS was around 120-144.
I played the footage in Potplayer.
I find the first round by finding where I start shooting, pressing the frame skip keys (D, F) to find exactly when the projectile is spawned in the barrel.
From this point, I press G to find the exact start time.
I allow the footage to play normally until the last round.
Pausing, and then using the frame skip keys, I find the exact time the last round was spawned in the barrel.
Pressing G again to copy the time.
I subtract these times from one another to get the time to fire a magazine.
I use this time and the amount of rounds fired get the rate of fire.
I estimate this method is accurate within about AT ABSOLUTE WORST 25RPM. The machine guns have the best accuracy due to increase sample size, although I could have used infinite ammo and sat there counting 100 rounds, I thought it would be overkill and a waste of my time since my point is already illustrated.