在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言拆解循環 以空間換時間

麥辣雞腿堡 ? 來源:軒哥談芯 ? 作者:Debug ? 2023-11-20 18:05 ? 次閱讀

拆解循環-以空間換時間

在編寫循環處理程序的時候要充分利用CPU的指令緩存,要充分分解小的循環。特別是當循環體本身很小的時候,分解循環可以提高性能。

這里要注意,很多編譯器并不能自動分解循環。不好的代碼:

// 3D轉化:把矢量 V 和 4x4 矩陣 M 相乘
for (i = 0;i < 4;i ++)
{
r[i] = 0for (j = 0;j < 4;j ++)
{
r[i] += M[j][i]*V[j];
}
}

推薦的代碼:

r[0] = M[0][0]*V[0] + M[1][0]*V[1] + M[2][0]*V[2] + M[3][0]*V[3];
r[1] = M[0][1]*V[0] + M[1][1]*V[1] + M[2][1]*V[2] + M[3][1]*V[3];
r[2] = M[0][2]*V[0] + M[1][2]*V[1] + M[2][2]*V[2] + M[3][2]*V[3];
r[3] = M[0][3]*V[0] + M[1][3]*V[1] + M[2][3]*V[2] + M[3][3]*v[3];

02

充分提取循環中的公共部分

對于一些不需要循環變量參加運算的任務可以把它們放到循環外面,這里的任務包括表達式、函數的調用、指針運算、數組訪問等,應該將沒有必要執行多次的操作全部集合在一起,放到一個init的初始化程序中進行。

03

延時函數中的循環技巧

通常使用的延時函數均采用自加的形式:

void delay (void)
{
  unsigned int i;
  for (i=0;i< 1000;i++) ;
}

將其改為自減延時函數:

void delay (void)
{
  unsigned int i;
  for (i=1000;i >0;i--) ;
}

兩個函數的延時效果相似,但幾乎所有的C編譯對后一種函數生成的代碼均比前一種代碼少13個字節,因為幾乎所有的MCU均有為0轉移的指令,采用后一種方式能夠生成這類指令。在使用while循環時也一樣,使用自減指令控制循環會比使用自加指令控制循環生成的代碼更少13個字母。

但是,在循環中有通過循環變量“i”讀寫數組的指令時,使用預減循環有可能使數組超界,要引起注意。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137119
  • 程序
    +關注

    關注

    117

    文章

    3792

    瀏覽量

    81161
  • 編譯器
    +關注

    關注

    1

    文章

    1636

    瀏覽量

    49172
收藏 人收藏

    評論

    相關推薦

    C語言基礎知識(5)--循環語句

    C語言基礎知識(5)--循環語句
    的頭像 發表于 06-15 10:18 ?2404次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>基礎知識(5)--<b class='flag-5'>循環</b>語句

    C語言中for循環的用法和應用 C語言中for循環與while循環的區別

    C語言中的循環結構時,for循環是最常用的一種。它允許重復執行一段代碼,直到滿足特定條件為止。
    發表于 08-18 16:33 ?3323次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中for<b class='flag-5'>循環</b>的用法和應用 <b class='flag-5'>C</b><b class='flag-5'>語言</b>中for<b class='flag-5'>循環</b>與while<b class='flag-5'>循環</b>的區別

    C語言循環結構的使用方法

    詳細介紹了C語言while循環結構、do-while循環結構、for循環結構、循環退出語句的語法
    發表于 11-02 11:26 ?1848次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>循環</b>結構的使用方法

    C語言for循環的用法和注意事項

    C 語言是一種廣泛使用的編程語言,它具有簡潔、高效、靈活的特點。C 語言中有很多控制流程的語句,其中 for
    的頭像 發表于 11-20 18:27 ?2470次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>for<b class='flag-5'>循環</b>的用法和注意事項

    C語言入門教程-if語句和while循環

    if語句和while循環 C語言中,if語句和while循環都會用到布爾表達式。下面是一個使用if語句的簡單例子: #include
    發表于 07-29 10:48 ?8562次閱讀

    C++語言基礎講解視頻do while循環語句

    C++語言基礎講解視頻do while循環語句
    發表于 01-14 15:32 ?5次下載

    C++語言基礎講解視頻while循環語句

    C++語言基礎講解視頻while循環語句,喜歡的朋友可以下載來學習。
    發表于 01-14 15:31 ?3次下載

    C語言教程之循環顯示隨機數問題

    C語言教程之循環顯示隨機數問題,很好的C語言資料,快來學習吧。
    發表于 04-25 15:03 ?0次下載

    多變循環彩燈C語言+Proteus軟件仿真參考程序

    此軟件提供多變循環彩燈C語言+proteus軟件仿真參考程序。
    發表于 08-30 16:23 ?21次下載
    多變<b class='flag-5'>循環</b>彩燈<b class='flag-5'>C</b><b class='flag-5'>語言</b>+Proteus軟件仿真參考程序

    C語言教程之使用循環結構設計C語言程序的資料說明

    本文檔詳細介紹的是C語言教程之使用循環結構設計C語言程序的資料說明主要內容包括了:1.while循環
    發表于 02-15 11:27 ?3次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>教程之使用<b class='flag-5'>循環</b>結構設計<b class='flag-5'>C</b><b class='flag-5'>語言</b>程序的資料說明

    C語言的3種循環結構分析

    C語言循環結構有for循環、while循環、do循環和goto
    的頭像 發表于 05-20 13:43 ?1.1w次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的3種<b class='flag-5'>循環</b>結構分析

    C語言中的數組空間動態開辟

    C語言中的數組空間動態開辟 在C語言中,必不可少的需要使用到數組,通常為了動態的開辟數組空間,可
    的頭像 發表于 02-10 12:42 ?2191次閱讀

    C語言循環與分支-2

    而在c語言中我們經常會需要重復地進行一些指令,但是不斷的編輯重復代碼不僅很繁瑣,還容易出現bug,因此循環語句的使用就非常有必要。今天要介紹的就是循環語句相關的知識。
    的頭像 發表于 02-21 15:35 ?714次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>循環</b>與分支-2

    c語言在while中嵌套if循環

    C語言是一種廣泛使用的面向過程編程語言,它提供了許多控制結構來幫助程序員實現復雜的邏輯和流程控制。其中,while循環和if語句是非常常見和重要的控制結構。本文將詳細介紹
    的頭像 發表于 11-22 10:09 ?6302次閱讀

    深入理解C語言循環語句的應用與優化技巧

    在程序設計中,我們常常需要重復執行某一段代碼。為了提高效率和簡化代碼,循環語句應運而生。C語言作為一門經典的編程語言,提供了多種循環控制結構
    的頭像 發表于 12-07 01:11 ?194次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>循環</b>語句的應用與優化技巧
    主站蜘蛛池模板: 天堂最新版中文网| 中文字幕不卡免费高清视频| 亚洲午夜精品久久久久久人妖| a一级| 免费看一级大片| 在线a网| 456亚洲人成影院在线观| 午夜黄视频| 1024人成软件色www| 青青热久免费精品视频在线观看| 男男浪荡双性受hplay| 在线免费亚洲| 欧美日本不卡| 性欧美xxxx视频| 在线观看国产三级| 无遮挡一级毛片视频| 日本三级在线| 三级网站在线播放| 天堂网中文字幕| 日本精品视频| 精品一级毛片| freesexvideo性2| a在线观看网站| 天堂资源最新版在线官网| 国产大片黄在线观看| 久久免费视频2| 欧美成年网站| h网站在线观看| h国产视频| 最新激情网| 欧美午夜大片| 成人国内精品久久久久影院| 日本加勒比高清一本大道| 欧美三级免费网站| 在线播放你懂得| 农村苗族一级特黄a大片| 另类free性欧美护士| 噜噜噜 综合 亚洲| 自拍偷拍福利视频| 天天操穴| 欧美精品网|