Battlefield 3 has a built in performance monitor.
To open it:
1) Open the console while in the game by pressing the ~ (tilde key).
2) Type: "
render.perfoverlayvisible 1" without the quotes. (Remove the overlay, replace the 1 with a 0).
Ideally, there should be no large spikes in either graph (CPU = Yellow, GPU = Green). However, if one of them is spiking its being taxed heavily. The graphs should be as close as possible to have good smooth gameplay. I can't remember precisely, but if the CPU is *above* the GPU line, you're CPU limited (ie: your CPU is working as hard as it can) and vice versa.
This started happening to me *after* the latest Origin/BF3 patch a coupe of weeks ago. Along with not being able to play back to back rounds. The game would give me the infamous "Black Screen" between loading maps, I'd have to exit and rejoin the server. I'm using an Gigabyte 5850 overclocked with 1GB DDR5. I'm running the game on medium settings (save for terrain detail on "Low") and no AA or MSAA. My FPS are normally in the 40-70 range. However, after a couple of rounds I notice slow gameplay, but I think this is caused by limited GPU memory. I was using the Catalyst 12.1 drivers, but returned to the 11.9s as they seem to work best for me.
Anyway, here's a guide you can use to tweak your game:
http://www.geforce.com/Optimize/Guides/battlefield-3-tweak-guideI also use a program called "Game Booster" and disable visual themes in Vista to dedicated as much RAM towards the game as possible.
System specs:
AMD Athlon II x4 635 overclocked to 3.2GHz
4GB DDR3 RAM
Gigabyte 5850 OC (765/1000 - Core/Memory clocks)
Good luck with your game!