0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編譯器優(yōu)化對(duì)函數(shù)的影響

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-22 14:58 ? 次閱讀

編譯器如gcc,可以指定不同的優(yōu)化參數(shù),在某些條件下,有些函數(shù)可能會(huì)被優(yōu)化掉。

先寫一個(gè)簡(jiǎn)單的測(cè)試文件:

編譯器優(yōu)化對(duì)函數(shù)的影響

用命令

gcc -g -c test.c

編譯成目標(biāo)文件。

用 nm檢查函數(shù)符號(hào):

$ nm -C test.o

00000000 T foo

現(xiàn)在使用 命令

gcc -g -c -O2 test.c

重新編譯。

再用 nm檢查:

$ nm -C test.o

00000000 T foo

還是能找到函數(shù) foo.

這表明foo沒有被優(yōu)化掉

現(xiàn)在把函數(shù) foo改成靜態(tài)函數(shù):

編譯器優(yōu)化對(duì)函數(shù)的影響

使用 -O2編譯,然后用 nm查找,會(huì)發(fā)現(xiàn),此時(shí) foo符號(hào)找不到了。

可見,靜態(tài)函數(shù)有可能會(huì)被GCC優(yōu)化掉。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 優(yōu)化
    +關(guān)注

    關(guān)注

    0

    文章

    220

    瀏覽量

    23904
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62609
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49129
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SIMD計(jì)算機(jī)的優(yōu)化編譯器設(shè)計(jì)

    利用處理的相關(guān)資源,提高編譯器優(yōu)化性能和增強(qiáng)代碼可適應(yīng)性是SIMD處理優(yōu)化編譯的關(guān)鍵。該文基
    發(fā)表于 04-03 08:47 ?30次下載

    MCS-51程序空間擴(kuò)展原理及編譯器優(yōu)化

    討論了MCS-51系列單片機(jī)程序空間擴(kuò)展的原理,包括硬件與編譯器兩個(gè)方面,并提出一種編譯器優(yōu)化方案.該方案在Keil仿真上檢驗(yàn)并通過關(guān)健詞:C51
    發(fā)表于 10-23 08:55 ?100次下載

    編譯器_keil的優(yōu)化選項(xiàng)問題

    keil編譯器優(yōu)化選項(xiàng)針對(duì)ARM,對(duì)STM32編譯的一些優(yōu)化的問題
    發(fā)表于 02-25 14:18 ?3次下載

    CodeVsionAVR編譯器常用庫(kù)函數(shù)簡(jiǎn)介

    CodeVsionAVR編譯器常用庫(kù)函數(shù)簡(jiǎn)介,很好的Proteus資料,快來下載學(xué)習(xí)吧。
    發(fā)表于 04-18 14:35 ?0次下載

    PICC編譯器的庫(kù)函數(shù)詳解

    本章將詳細(xì)列出PICC編譯器的庫(kù)函數(shù)。每個(gè)函數(shù)均從函數(shù)名開始,然后按照以下幾個(gè)標(biāo)題給出詳細(xì)解釋。
    發(fā)表于 10-14 14:17 ?0次下載

    C編譯器及其優(yōu)化

    本章將幫助讀者在ARM處理上編寫高效的C代碼。本章涉及的一些技術(shù)不僅適用于ARM處理,也適用于其他RISC處理。本章首先從ARM編譯器及其優(yōu)化
    發(fā)表于 10-17 17:22 ?2次下載

    如何使用英特爾編譯器優(yōu)化Fortran、C和C ++

    了解如何使用適用于Fortran *,C和C ++的英特爾?編譯器優(yōu)化一些困難的循環(huán)。 示例選自經(jīng)典的netlib.org矢量基準(zhǔn)測(cè)試,這些測(cè)試不是由當(dāng)前的英特爾編譯器自動(dòng)優(yōu)化的,但
    的頭像 發(fā)表于 11-08 06:02 ?3191次閱讀

    關(guān)于volatile關(guān)鍵字對(duì)編譯器優(yōu)化的影響

    volatile關(guān)鍵字對(duì)編譯器優(yōu)化的影響
    的頭像 發(fā)表于 02-28 17:15 ?2945次閱讀

    虛擬機(jī):編譯器對(duì)C函數(shù)的名字修飾

    虛擬機(jī):編譯器對(duì)C函數(shù)的名字修飾
    的頭像 發(fā)表于 06-22 11:44 ?2563次閱讀
    虛擬機(jī):<b class='flag-5'>編譯器</b>對(duì)C<b class='flag-5'>函數(shù)</b>的名字修飾

    基于C++編譯器的節(jié)點(diǎn)融合優(yōu)化方法

    LLVM是以C十十編寫的架構(gòu)編譯器的框架系統(tǒng),支持多后端和交叉編譯,用于優(yōu)化程序的編譯時(shí)間、鏈接時(shí)間、運(yùn)行時(shí)間和空閑時(shí)間。節(jié)點(diǎn)融合是一種簡(jiǎn)單有效的優(yōu)
    發(fā)表于 06-15 14:29 ?19次下載

    編譯器優(yōu)化選項(xiàng)

    一個(gè)程序首先要保證正確性,在保證正確性的基礎(chǔ)上,性能也是一個(gè)重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數(shù)據(jù)結(jié)構(gòu);第二,應(yīng)該編寫編譯器能夠有效優(yōu)化以轉(zhuǎn)換成高效可執(zhí)行代碼的源代碼,要做到
    的頭像 發(fā)表于 11-24 15:37 ?906次閱讀
    <b class='flag-5'>編譯器</b>的<b class='flag-5'>優(yōu)化</b>選項(xiàng)

    Keil編譯器優(yōu)化方法

    我們都知道,代碼是可以通過編譯器優(yōu)化的,有的時(shí)候,為了提高運(yùn)行速度或者減少代碼尺寸,會(huì)開啟優(yōu)化選項(xiàng)。
    的頭像 發(fā)表于 10-23 16:35 ?554次閱讀
    Keil<b class='flag-5'>編譯器</b><b class='flag-5'>優(yōu)化</b>方法

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個(gè)開源的編譯器前端,它支持多種編程語(yǔ)言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個(gè)可擴(kuò)展和可定制的編譯器框架,允許開發(fā)者添加新的編程語(yǔ)言特性和優(yōu)化技術(shù)
    的頭像 發(fā)表于 12-24 17:23 ?325次閱讀

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現(xiàn)在以下幾個(gè)方面: 一、定位與目標(biāo) Triton編譯器 : 定位:專注于深度學(xué)習(xí)中最核心、最耗時(shí)的張量運(yùn)算的優(yōu)化。 目標(biāo):提供一個(gè)高度抽象、靈
    的頭像 發(fā)表于 12-24 17:25 ?313次閱讀

    Triton編譯器優(yōu)化技巧

    在現(xiàn)代計(jì)算環(huán)境中,編譯器的性能對(duì)于軟件的運(yùn)行效率至關(guān)重要。Triton 編譯器作為一個(gè)先進(jìn)的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的代碼既高效又適應(yīng)不同的硬件架構(gòu)。 1. 指令
    的頭像 發(fā)表于 12-25 09:09 ?171次閱讀