I am porting the code from INTEL architecture to ARM architecture. The same code I am trying to build with arm cross compilers on centos. Are there any compiler options that increase the performance of executable image because the image on INTEL might not give similar performance on ARM. Is there a way to achieve this?
compiler options to increase optimization performance of the code
2k Views Asked by Meraj Hussain At
1
There are 1 best solutions below
Related Questions in GCC
- gcc static library compilation
- Different behavior of async with Visual Studio 2013(Windows8.1) and GCC 4.9(Ubuntu14.10)
- How to add directories to Cygwin gcc default search path
- Usage of #ifndef directive
- Failure to link a program with gcc -static
- Text as parameter in inline assembly (ARM)?
- Alternatives for strrspn and strfind functions(libgen functions in Solaris) in AIX?
- Incorrect format specifier with gcc compiler
- Why should I use a closing bracket in this?
- How can I compile *without* various instruction sets enabled?
- Automatically wrap C/C++ function at compile-time with annotation
- gcc compiled library: can successfully link with, how come it's "undefined symbol" when run the program?
- compiling caffe on Yosemite
- error - /usr/bin/ld: cannot find -lavutil in ubuntu 15.04
- Compatibility of libstdc++.so libgcc_s.so when upgrading GCC 4.1 to GCC 4.8.2
Related Questions in G++
- Using std::vector<> and std::shared_ptr<> should cause error
- C++ string and char* manipulation acting weird
- Seg fault when trying to compile PhantomJS from source on CentOS 7
- There is a way in gcc to get a warning when a constexpr can't be evaluated at compile time?
- GCC expected template-name before ‘<’ token error
- C++ What determines which version of C++ can run on a specific architecture (like Arduino)
- C++ unsigned long doesn't wrap around after 4294967295
- Exception not caught on -O2
- Relationship between gcc, g++, cygwin, and wingw?
- Getting unexpected "undefined reference to" errors when compiling with a static library
- SIGSEGV with std::map of pointers to template objects
- OpenGl XUbuntu 14.04 glShaderSource, glCompileShader, glCreateProgram functions not declared
- g++: error: unrecognized command line option ‘-stdlib=libstdc++’
- OpenMP support on OpenBSD
- Is it possible to merge coverage data from two executables with gcov/gcovr?
Related Questions in ARM
- Why Device Tree Structure (DTS) file is needed both in bootloader and kernel source code?
- How can I use LD to place ARM reset vectors in a program segment
- Errors in makefile for qemu 0.14.1 in ubuntu 15.04 64 bit
- Text as parameter in inline assembly (ARM)?
- GSL: nm outputs "undefined Symbol (U)"
- How to address multiple definition compiler error
- Did anyone compiled GSL for androind?
- Linker Error on cross compiling Project in eclipse
- How to set privilaged mode in ARM Cortex-A8?
- Why is a write to a memory-mapped peripheral register not actioned (LPC43xx)?
- what's ARM TCM memory
- Traversing a string using arm assembly inside V8 source
- C Global declared in ISR
- Which is better? int8_t vs int32_t in 32 bits MCU
- Cannot find -lgtk-x11-2.0. Also, some modules are not found by cmake, though they are installed
Related Questions in CROSS-COMPILING
- Cross compile simple standard C program on Linux for Mac
- mingw-64 conflicting declarations when cross-compiling
- GSL: nm outputs "undefined Symbol (U)"
- using Diab, dcc 5.9.4 to compile a windows executable
- Cross compiling for Raspberry pi 2 error
- Linker Error on cross compiling Project in eclipse
- Get conditional branch slot from MIPS cross compiler
- Prelink Error: prelink-cross: simple hello world example
- Go Cross compiler fails
- How to install the third-party python (2.7) modules (e.g. Pycrypto) on ARM?
- impossible constraint in 'asm' error
- How can I compile ndpiReader.c that comes with nDPI library in Windows?
- How Do I Configure Qmake for Cross Compilation?
- Building a cross compile of binutils on OS X Yosemite
- Explain behavior of Unix sleep() function executed on Android
Related Questions in INTEL
- How can I compile *without* various instruction sets enabled?
- Restrict MKL optimized scipy to single thread
- Why is genymotion running so slowly?
- Intel VT-X not found
- Intel Edison with Kinect
- Formatting a MicroSD card within OSX
- Can I run Cuda or OpenCl on Intel processor graphics I7 (3rd or 4rd generation)
- Contrast reduction - intel x86
- x86 assembly fading bmp with linear interpolation
- Why I'm getting "error expected an expression" while compile cilk program
- Intel HAXM's intelhaxm-android.exe is not running
- Cordova - Media Plugin - Intel XDK - IOS build fail
- intel xdk: my links are not working
- running a python script that requires matplotlib gives: ImportError: undefined symbol: __libm_sse2_sincos
- To which cache a function pointer belongs to?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
A lot of optimization options exist in GCC. By default the compiler tries to make the compilation process as short as possible and produce an object code that makes debugging easy. However, gcc also provides several options for optimization.
Four general levels of incremental optimizations for performance are available in GCC and can be activated by passing one of the options
-O0,-O1,-O2or-O3. Each of these levels activates a set of optimizations that can be also activated manually by specifying the corresponding command line option. For instance with-O1the compiler performs branches using the decrement and branch instruction (if available and applicable) rather then decrementing the register, comparing it to zero and branching in separate instructions. This decrement and branch can be also specified manually by passing the-fbranch-count-regoption. Consider that optimizations performed at each level also depend on the target architecture, you can get the list of available and enabled optimization by running GCC with the-Q --help=optimizersoption.Generally speaking the levels of optimization correspond to (notice that at each level also the optimization of the previous ones are applied):
-O0: the default level, the compiler tries to reduce compilation time and produce an object code that can be easily processed by a debugger-O1: the compiler tries to reduce both code size and execution time. Only optimizations that do not take a lot of compile time are performed. Compilation may take considerably more memory.-O2: the compiler applies almost all optimizations available that do not affect the code size. Compiling takes more but performance should improve.-O3: the compiler applies also optimization that might increase the code size (for instance inlining functions)For a detailed description of all optimization options you can have a look here.
As a general remark consider that compiler optimization are designed to work in the general case but their effectiveness will depend a lot on both you program and the architecture you are running it on.
Edit:
If you are interested in memory paging optimization there is the
-freorder-blocks-and-partitionoption (activated also with-O2). This option reorders basic blocks inside each function to partition them in hot blocks (called frequently) and cold blocks (called rarely). Hot blocks are then placed in contiguous memory locations. This should increasing cache locality and paging performance.