Mac OS X takes advantage of hardware wherever it can to improve performance wherever it can. In the case of repetitive tasks operating on large data sets, Mac OS X uses the vector-oriented extensions provided by the processor. (Mac OS X currently supports the PowerPC AltiVec extensions and the Intel x86 SSE extensions.) Hardware-based vector units boost the performance of any application that exploits data parallelism, such as those that perform 3D graphic imaging, image processing, video processing, audio compression, and software-based cell telephony. Quartz and QuickTime incorporate vector capabilities, thus any application using these APIs can tap into this hardware acceleration without making any changes.
In Mac OS X v10.3 and later, you can use the Accelerate framework (Accelerate.framework) to accelerate complex operations using the available vector unit. This framework supports both the PowerPC AltiVec and Intel x86 SSE extensions internally but provides a single interface for you to use in your application. The advantage of using this framework is that you can simply write your code once without having to code different execution paths for each hardware platform. The functions of this framework are highly tuned for the specific platforms supported by Mac OS X and in many cases can offer better performance than hand-rolled code.
The Accelerate framework is an umbrella framework that wraps the vecLib and vImage frameworks into a single package. The vecLib framework contains vector-optimized routines for doing digital signal processing, linear algebra, and other computationally expensive mathematical operations. (The vecLib framework is also a top-level framework for applications running on versions of Mac OS X up to and including version 10.5.) The vImage framework supports the visual realm, adding routines for morphing, alpha-channel processing, and other image-buffer manipulations.
For information on how to use the components of the Accelerate framework, see vImage Programming Guide, vImage Reference Collection, and vecLib Framework Reference. For general performance-related information, see Reference Library > Performance.
Last updated: 2007-10-31