@Ryan json encode and decode won't work with NaN and INFINITE values for float and potentially may have other issues I can't think of from the top of my head but for many cases it might be a better option. As for optimization, what it needs is context - let me plug a post I wrote on this subject evidentlycube.com/blog/game-optimization/when-to-optimize. the tl;dr being, don't optimize things that don't take huge chunk of the running time because the benefits are meaningless in the context of the whole application.

If the tears have to fade, then you have to get high again