OnQ Blog

Better App Performance through the Snapdragon Compiler

Apr 11, 2014

Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries.

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.

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).

Engage with us on


Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries ("Qualcomm"). Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries. The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.

Adam Kerin

Sr Manager, Marketing