efficiency of SimpleMessageSystem vs Firmata vs raw serial data

It's not clear to me what the advantages are of each of these different approaches to capturing data... is there a situation in which SimpleMessageSystem is better than not? What do YOU use to interface with with software and why?

Certainly raw serial can be most efficient because you can send the least amount of data if you design the protocol to closely match your needs. Of course the flip side of thai is that you have to design the protocol, a process fraught with pitfalls, and do all the coding yourself. Pre-coded libraries can save a lot of time and frustration. Like anything in programing, it's a trade-off.

Firmata is useful if you want to use the Processing Firmata implementation to control the Arduino, and you are willing to have the Arduino do nothing but be controlled by Processing (or any other application that implements the protocol).

The SimpleMessageSystem is great if you don't understand collecting serial data into an array and parsing it. And, if the sending system can use it.

Raw serial data is what you get from GPSs and many other devices. The SimpleMessageSystem library can't be used to get random serial data and make sense of it. Here, you need to "roll your own" (or use a library where someone else already has).

Each method has it's place, it's overhead, and it's restrictions.