六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

C語言高效編程的的4招技巧

[摘要]引言:   編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。   第一招:以空間換時間   計算機程序中最大的矛盾是空間和時間的矛盾,那么,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解決問題的第1招--以空間換時間。...
引言:

  編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。

  第一招:以空間換時間

  計算機程序中最大的矛盾是空間和時間的矛盾,那么,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解決問題的第1招--以空間換時間。

  例如:字符串的賦值。

  方法A:通常的辦法:

  #define LEN 32
  char string1 [LEN];
  memset (string1,0,LEN);
  strcpy (string1,"This is a example!!");


  方法B:

  const char string2[LEN] ="This is a example!";
  char * cp;
  cp = string2 ;


  使用的時候可以直接用指針來操作。

  從上面的例子可以看出,A和B的效率是不能比的。在同樣的存儲空間下,B直接使用指針就可以操作了,而A需要調用兩個字符函數才能完成。B的缺點在于靈活性沒有A好。在需要頻繁更改一個字符串內容的時候,A具有更好的靈活性;如果采用方法B,則需要預存許多字符串,雖然占用了大量的內存,但是獲得了程序執行的高效率。

  如果系統的實時性要求很高,內存還有一些,那我推薦你使用該招數。該招數的變招--使用宏函數而不是函數。舉例如下:

  方法C:

  #define bwMCDR2_ADDRESS 4
  #define bsMCDR2_ADDRESS 17
  int BIT_MASK(int __bf)
  {
  return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
  }
  void SET_BITS(int __dst, int __bf, int __val)
  {
  __dst = ((__dst) & ~(BIT_MASK(__bf)))
  (((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
  }

  SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);


  方法D:

  #define bwMCDR2_ADDRESS 4
  #define bsMCDR2_ADDRESS 17
  #define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
  #define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))
  #define SET_BITS(__dst, __bf, __val)
  ((__dst) = ((__dst) & ~(BIT_MASK(__bf)))
  (((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))

  SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);


  函數和宏函數的區別就在于,宏函數占用了大量的空間,而函數占用了時間。大家要知道的是,函數調用是要使用系統的棧來保存數據的,如果編譯器里有棧檢查選項,一般在函數的頭會嵌入一些匯編語句對當前棧進行檢查;同時,CPU也要在函數調用時保存和恢復當前的現場,進行壓棧和彈棧操作,所以,函數調用需要一些CPU時間。而宏函數不存在這個問題。宏函數僅僅作為預先寫好的代碼嵌入到當前程序,不會產生函數調用,所以僅僅是占用了空間,在頻繁調用同一個宏函數的時候,該現象尤其突出。

  D方法是我看到的最好的置位操作函數,是ARM公司源碼的一部分,在短短的三行內實現了很多功能,幾乎涵蓋了所有的位操作功能。C方法是其變體,其中滋味還需大家仔細體會。

[1] [2]  下一頁




主站蜘蛛池模板: 中文乱码一二三四有限公司 | 日本一卡二卡三卡 | 天天影视色香欲性综合网网站 | 一级做a爰全过程免费视频 一级做a爰片性色毛片小说 | 四虎一影院区永久精品 | 青青国产成人久久91网 | 天天想夜夜操 | 日韩视频在线精品视频免费观看 | 欧美一级情欲片在线 | 三级中文有码中文字幕 | 亚洲精品免费在线视频 | 四虎sihu新版影院亚洲精品 | 四虎影院大全 | 中国黄色毛片 | 亚洲国产成人影院播放 | 最新午夜 | 四虎影院观看视频在线观看 | 天干夜天干天干国产 | 亚洲福利国产 | 亚洲精品青青草原avav久久qv | 日韩欧美亚洲视频 | 青青青在线视频国产 | 人人精品 | 青青久久久国产线免观 | 亚洲天堂热 | 青青青国产在线观看免费网站 | 天天舔日日干 | 亚洲精品自拍视频 | 日日干天天射 | 天天干天天色综合 | 青青草国产精品久久久久 | 天天操天天射天天插 | 特黄特色的免费大片看看 | 亚洲系列国产系列 | 亚洲 欧美 国产 中文 | 日韩欧美亚洲每日更新网 | 亚洲六月丁香六月婷婷蜜芽 | 青青在线播放 | 无码中文字幕日韩专区 | 亚洲一区二区在线播放 | 日韩 欧美 中文字幕 不卡 |