The rule of thumb is that it is okay to pass small structs by value and larger ones should be done pointers.
My question is where exactly is this cutoff point? How large can the structures be before you are better off passing them by pointer.
I know this will vary between platforms, but I assume some rough estimates could be given. A year or two ago I tried to figure out this on the PPC architecture and found to my surprise that one could pass quite a lot of data efficiently by value. Think 10 double values or so was just fine due to the large number of registers in PPC. By pointer actually involved more copying in and out of memory.
However I now I am on intel and I expect things could be different. Since the CPU don't have that many registers traditionally, but perhaps that is different on 64bit or floating point registers?