The OpenMx developers team has started looking at the most effective optimizations we can implement prior to the version 1.0 release this summer. One large candidate is the sorting of raw data, and then using the information learned from the sorting process to speed up full information maximum likelihood (FIML) estimation. We should write a forum post devoted entirely to the sorting process, and the various transformation we can perform after we have sorted the data, but that forum post will appear in the future.
At present, OpenMx performs one type of objective function transformation. A RAM objective function with raw data is transformed into a FIML objective function with raw data. In current releases (0.3.3), if you are running RAM models with raw data and no missing data and wondering why they are so slow, try replacing the raw data with means and covariance matrices. Sometime soon that optimization will be made for you, even in cases of missing data (see below).
The story is about to become more interesting with the sorting of raw data. I have come up with at least three distinct transformation patterns for objective functions. The following abbreviations are used: RAM = RAM objective function. FIML = FIML objective function. raw = raw data. def vars = definition variables. [execute] = running the current state of the model in order to derive approximate free parameter values for the subsequent model execution.
1) RAM + raw w/ no def. vars. ---> RAM + means and covs [execute] ---> RAM + raw --> FIML + raw
2) FIML + raw w/ no def. vars. ---> ML + means and covs [execute] --> FIML + raw
3) RAM + raw w/ def. vars. --> FIML + raw