April 11, 2014Adam Kerin
Qualcomm® Technologies Inc. (QTI) recently released an updated Snapdragon™ LLVM Compiler for the Android NDK which is designed to optimize code and unleash the power inside Snapdragon processors.
QTI understands that great user experiences and high-end performance result only from silicon and software working together in harmony. The highest performing CPU is nothing without optimized software which fully utilizes its features. This is why we continue to offer and improve this Snapdragon™ compiler for our extensive developer community and product portfolio.
Code compiled with the Snapdragon LLVM compiler will perform better on Snapdragon processors because it features unique optimizations and bug fixes. In a continuation of our 64-bit push across our entire roadmap and ecosystem, this compiler now adds code generation support for the 64-bit ready Snapdragon processors, the Snapdragon 615, 610 and 410.
To understand the role of a compiler, think of coding like writing. You first write your book in a language you understand. If you would like your work read in other countries, you obviously require a translation.
That language translation is essentially the compiler’s role.
After coding your app in a higher level language like C++, the compiler “translates” your work into another “language” that is readable by the processor that will execute it.
It is easier to speak the C++ programming language than it is the processors assembly code. The story does not end here, because not all processors understand the same language. While Snapdragon processors use the ARM instruction set, there are architectural customizations and improvements that make them distinct from a generic ARM CPU.
For the book translation analogy, if you rely on a simple web-based translation there is an inherent risk. The message may be conveyed, but not in the most effective manner, like this example.
“Keep Off the Grass” becomes something more poetic.
The same is true for a compiler. To get the best “translation” and thereby performance on a given architecture, the compiler should also “speak” the “native language” of the target platform. Unsurprisingly, code optimized specifically for a processor is called native code. In Android, a processor can use the generic language of the platform, Dalvik, which is agnostic to the processor’s unique language. However, this is not optimized for performance. Just as a passerby may stop and scratch their head reading “The grass has the life, you keep blue,” so to may a processor waste time executing non-native or un-optimized code.
A comprehensive compiler is just one way in which Qualcomm Technologies helps OEMs and app developers unleash the best performance and user experiences from Snapdragon processors.
Learn more about Snapdragon LLVM here or explore the other ways in which we facilitate better experiences through software, like Augmented Reality (Vuforia), Battery Life (Snapdragon Battery Guru), and inter-device communication in the Internet of Everything (AllJoyn).
April 11, 20140