There are a lot of things to keep in mind when tipping. If the food is slow, it is almost certainly not the fault of your server/waiter. If the kitchen is slow, don't punish your waiter/waitress by not tipping. They'd love to bring you your food really quickly. A slow kitchen kills tips, and the wait staff suffer the most.
Here's an idea. I've worked in the food industry a lot. If you get good service, leave a good tip for the waiter. I suggest 20%. Then, go to the kitchen and drop a fiver for the kitchen staff. They probably get a small percentage of the tips anyway, but it's a good idea. Get to know the wait staff, make them remember you. Next time you're there, when they bring the order back, the waiter/waitress is going to say to the cooks "This is for that guy that came back and tipped you last time he was here." Your portion size goes up. Your drink size goes up. Your order gets pushed up the queue.
If you find a restaurant you like, tip well. They'll like you back.