最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言對于volatile與gcc優(yōu)化的探究

 更新時(shí)間:2023年02月03日 15:07:42   作者:水火汪  
這篇文章主要介紹了C語言對于volatile與gcc優(yōu)化的探究,volatile是一個(gè)特征修飾符(type specifier) volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。這是百度百科的介紹,那編譯器是具體是怎么優(yōu)化的呢

volatile是一個(gè)特征修飾符(type specifier) volatile的作用是作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值。這是百度百科的介紹,那編譯器是具體是怎么優(yōu)化的呢。

我們知道gcc 是有O0 O1 O2 O3的優(yōu)化等級(jí)的,其中O0優(yōu)化最低,O3優(yōu)化最高。

現(xiàn)在看下下面一段簡單程序:

#include <stdio.h>
void task_delay(int count)
{
           count *= 50000;
           while(count--);
}
int main(int argc,char* argv[])
{
   printf("Task 0:Created!\n");
   printf("Task 0:Running ...\n");
   task_delay(1000);
    return 0;
}

不用優(yōu)化編譯下:

gcc -g  -O0 main.c

看下反匯編代碼:

objdump -d a.out

看的出來最低等級(jí)的優(yōu)化-O0 的執(zhí)行程序task_delay函數(shù)的匯編指令非常多,性能損耗長。

現(xiàn)在看下O1的優(yōu)化后效果:

xc@xc-virtual-machine:~$ gcc -g  -O1 main.c
xc@xc-virtual-machine:~$ objdump -d a.out

反匯編代碼:

明顯task_delay匯編指令比之前-O0優(yōu)化的時(shí)候要少,提升了執(zhí)行速度?,F(xiàn)在在來看下-O3的優(yōu)化后的反匯編代碼

看的出是直接空指令返回的,且運(yùn)行地址在1180在main函數(shù)是沒調(diào)用,這個(gè)暫時(shí)不知道怎么回事,交給后面的自己了,哈哈。

好了上面都是準(zhǔn)備工作,目的是告訴我們-O3能將程序優(yōu)化極致?,F(xiàn)在我們將count入?yún)⒂胿olatile修飾,會(huì)怎樣,根據(jù)百度百科的說法是不會(huì)進(jìn)行優(yōu)化的,我們測試下:

#include <stdio.h>
void task_delay(volatile int count)
{
           count *= 50000;
           while(count--);
}
int main(int argc,char* argv[])
{
   printf("Task 0:Created!\n");
   printf("Task 0:Running ...\n");
   task_delay(1000);
    return 0;
}

xc@xc-virtual-machine:~$ gcc -g  -O3 main.c
xc@xc-virtual-machine:~$ 
xc@xc-virtual-machine:~$ 
xc@xc-virtual-machine:~$ objdump -d a.out  

發(fā)現(xiàn)跟-O0的匯編代碼一樣,沒進(jìn)行優(yōu)化。

到此這篇關(guān)于C語言對于volatile與gcc優(yōu)化的探究的文章就介紹到這了,更多相關(guān)C語言volatile與gcc內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++的static靜態(tài)成員你有了解嗎

    C++的static靜態(tài)成員你有了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的static靜態(tài)成員,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++中string使用+號(hào)與int拼接方式

    C++中string使用+號(hào)與int拼接方式

    這篇文章主要介紹了C++中string使用+號(hào)與int拼接方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++移動(dòng)語義介紹與使用講解

    C++移動(dòng)語義介紹與使用講解

    首先,移動(dòng)語義和完美轉(zhuǎn)發(fā)這兩個(gè)概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來使用。本篇會(huì)從C++的值類型,到移動(dòng)拷貝與移動(dòng)賦值來理解移動(dòng)語義與完美轉(zhuǎn)發(fā)
    2022-09-09
  • C++ 讀寫文件安全又簡潔的簡單實(shí)例

    C++ 讀寫文件安全又簡潔的簡單實(shí)例

    這篇文章主要介紹了C++ 讀寫文件安全又簡潔的簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • wince程序防止創(chuàng)建多個(gè)實(shí)例實(shí)現(xiàn)互斥作用

    wince程序防止創(chuàng)建多個(gè)實(shí)例實(shí)現(xiàn)互斥作用

    什么時(shí)候用的互斥?當(dāng)你的程序只允許同時(shí)打開一個(gè)的時(shí)候,就可以通過互斥來實(shí)現(xiàn),下面說的互斥,主要是針對防止程序創(chuàng)建多個(gè)實(shí)例這種情況來實(shí)現(xiàn)的
    2014-02-02
  • 淺談c++中的while(cin)問題

    淺談c++中的while(cin)問題

    下面小編就為大家?guī)硪黄獪\談c++中的while(cin)問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    本文介紹了使用C++實(shí)現(xiàn)并行計(jì)算的兩種方式,包括OpenMP和MPI,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • C++變換迭代器使用方法小結(jié)

    C++變換迭代器使用方法小結(jié)

    本文主要介紹了C++變換迭代器使用方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • C 語言中strstr函數(shù)實(shí)例詳解

    C 語言中strstr函數(shù)實(shí)例詳解

    這篇文章主要介紹了C 語言中strstr函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 一起聊聊C++中的四種類型轉(zhuǎn)換符

    一起聊聊C++中的四種類型轉(zhuǎn)換符

    這篇文章主要是想喝大家一起聊聊來C++中的四種類型轉(zhuǎn)換符?:const_cast、reinterpret_cast、dynamic_cast和static_cast,感興趣的可以了解一下
    2022-07-07

最新評(píng)論

平果县| 和顺县| 民乐县| 晋宁县| 桂平市| 天气| 甘南县| 重庆市| 襄汾县| 东宁县| 正宁县| 五寨县| 宣武区| 芦溪县| 双鸭山市| 博爱县| 红原县| 曲阜市| 禄丰县| 昂仁县| 卓尼县| 深州市| 昌平区| 梁河县| 鹤壁市| 六安市| 古交市| 鹤庆县| 电白县| 项城市| 永康市| 北辰区| 郧西县| 曲阳县| 金川县| 山西省| 兴安县| 顺义区| 东阳市| 遂溪县| 金昌市|