In addition to everything Vince said, a few other notes. I don't have a ton of experience with R, but other programming languages often have similar issues with parallization.
The first thing I'd try if parallelizing is important to you is decreasing the # of cores you want to use to 2 from 3. If you are running a Core i5 that reports 4 cores, it likely only has 2 physical cores and 2 "logical" cores that Intel uses to eek out about 15% more performance from the same cores (but where treating the computer like it has 3 true cores is going to be a heavy load).
The second thing is to make sure your task is actually parallelizable. What I mean by that is that unless you want to enter a whole world of hurt, make sure that each core will be running using its own discrete chunk of data that the other cores will never want to/attempt to access. Once you get into data that needs to be shared between threads, locking of data structures comes into play, which can actually cause threads to wait for each other and have to transfer control, etc. This is on top of all of the initial overhead that Vince mentions. R may have ways of handling some of this for you - I don't have experience with parallelizing R in particular - but generally, it's easier if you hand each processor a distinct chunk of data to churn through so it can just work on it without worrying about what the other cores are doing.