zoukankan      html  css  js  c++  java
  • C/C++ 编译器优化

    0. gcc -o

    gcc -o 的优化仍然是机械的,想当然的。只有做到深入理解计算机系统,加深对编程语言的理解,才能写出最优化的代码。

    Linux下gcc 优化等级的介绍

    • gcc -o0 ⇒ 不提供任何优化;
    • gcc -o1 ⇒ 最基本的优化,主要对代码的分支、表达式、常量等进行优化,编译器会在较短的时间下将代码变得更加短小,这样体积就会变得更小,会减少内存的占用率,在操作系统进行内存调度时就会更快。
      • 但是事情没有绝对的优点,当一个庞大的程序被拆碎细分的话,内存占用会大大增加,由于当今系统大多数都是多线程,就会出现卡顿和反应延迟。
      • 大的项目代码不适合 gcc -o1 优化;
    • gcc -o2:是对 o1 的进阶,在 o1 在基础上会进行更严格的划分,最重要的是加入了寄存器的实用;

    1. volatile 关键字

    volatile 关键字能够阻止编译器的过度优化,可以做到如下两件事情:

    • 阻止编译器为了提高速度将一个变量缓存到寄存器而不写回;
    • 阻止编译器调整操作 volatile 变量的指令顺序;

    2. register 关键字

    将代码放在寄存器的方式是使用 register 修饰变量,适用于频繁调用的变量。

  • 相关阅读:
    257. Binary Tree Paths
    324. Wiggle Sort II
    315. Count of Smaller Numbers After Self
    350. Intersection of Two Arrays II
    295. Find Median from Data Stream
    289. Game of Life
    287. Find the Duplicate Number
    279. Perfect Squares
    384. Shuffle an Array
    E
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421154.html
Copyright © 2011-2022 走看看