XP takes about 30 seconds to do for a session. I did a little excel sheet to do the math for me.
I give XP for three main things - encounters, RP, and story awards.
I run a very RP heavy games and have "codified" RP XP - any good RP moment (very defining, doing the in-character instead of the smart thing, etc) any player (and I) give a chip. At the end of the night, I record them. I award a pool of RP XP, depending on how much RP there was. Everyone gets 2 shares of the pool, plus a share per chip. Yes, this is "complex math", but it was just a few minutes to set up once in a spreadsheet. Okay, the chips are also worth a little bit of "straight XP" also - this encourages people to give out chips. It not just a share of the pool they aren't getting. If everyone RPs well and gets 5 or 6 chips in a night, they're getting a bonus above just getting 3 or 4, even though the shares break out the same. If you have players that woudl abuse this, then you need to watch out.
As a side note, if the players split, groups I'm usually not active with are RPing among themselves, and they still give out chips.
Story awards are given based on what I think. Yes, it isn't quantified. If it was, who needs a DM?
Encounter XP is dirt easy with a spreadsheet. I normally halve it so I don't have super fast progression with this other XP, but I did a campaign reset earlier in the year and am currently leaving it at full until they reach 3-4th level.
There are minor other things - adding stuff to the campaign (stories, fleshing out the world, etc) gives a bonus. We've got a wiki, but even before that one player ran with my goblin-kin pantheon and fleshed it out wonderfully. (Joys of running a homebrew - there is always more to detail.)
To sum up, math is quick with a spreadsheet, and I've enlisted the player's aid to track RP XP.
Cheers,
=Blue