国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種效率提高的內(nèi)存復(fù)制方法

      文檔序號:6378932閱讀:618來源:國知局
      專利名稱:一種效率提高的內(nèi)存復(fù)制方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種計算機系統(tǒng)開發(fā)方法,尤其涉及一種效率提高的內(nèi)存復(fù)制方法。
      背景技術(shù)
      內(nèi)存復(fù)制函數(shù)(memcpy函數(shù))是計算機系統(tǒng)開發(fā)過程中最常用、也是最重要的庫函數(shù)之一,memcpy函數(shù)的實現(xiàn)與平臺有關(guān),一般都要盡可能提高該函數(shù)的性能,其效率直接影響到計算機系統(tǒng)的性能。memcpy 函數(shù)的原型是 void*memcpy (void*dest, void*src, int count),該函數(shù)實現(xiàn)的功能是將以src指向地址為起始地址的連續(xù)count個字節(jié)數(shù)據(jù)復(fù)制到以dest指向地址為起始地址的空間內(nèi)。以下是memcpy函數(shù)實現(xiàn)的一種典型方法
      void * memcpy(void * dest,const void *src,size_t count)
      {
      char *tmp, *s;tmp = (char *)dest;s = (char*)src;while (count—)
      * Imp 十十=
      return dest;
      }由上可見,完成一個字節(jié)復(fù)制需要以下步驟(I)檢查count是否為0,如果為O則函數(shù)返回,否則繼續(xù);(2)把src指針指向的地址中的數(shù)據(jù)復(fù)制到tmp指針指向的地址;(3) tmp 指針加 I;(4) src 指針加 I;(5) count 減 I ;(6)跳轉(zhuǎn)到步驟(I)。通過分析發(fā)現(xiàn),CPU復(fù)制一個字節(jié)需要經(jīng)過多個指令周期,尤其是在有跳轉(zhuǎn)指令的情況下,CPU指令流水線被頻繁打斷,極大的降低了 CPU執(zhí)行效率。上述方法是memcpy函數(shù)實現(xiàn)的最簡單方法之一,實際應(yīng)用中可以通過判斷dest地址和src地址是否為2字節(jié)對齊或4字節(jié)對齊,CPU可以通過一條指令復(fù)制2個字節(jié)或4個字節(jié),這種方法只能針對特殊情況,且效率提高并不明顯。

      發(fā)明內(nèi)容
      發(fā)明目的為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種效率提高的內(nèi)存復(fù)制方法,使CPU進(jìn)行大塊內(nèi)存復(fù)制操作時大幅提高效率。
      技術(shù)方案為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為一種效率提高的內(nèi)存復(fù)制方法包括如下步驟(I)判斷 count 是否大于 N,N > I ;
      (2)若步驟(I)的判斷為是,則按次序?qū)⑦B續(xù)的N個字節(jié)數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址,count=count_N、s=s+N、tmp=tmp+N,返回步驟(I);(3)若步驟(I)的判斷為否,則逐字節(jié)將數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址。優(yōu)選的,N=16。由上述步驟可見,CPU復(fù)制大于等于16個字節(jié)數(shù)據(jù)的時候,首先判斷count是否大于16 :若判斷為是,則按次序?qū)?6個字節(jié)數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址,最后將count減16、s加16,、tmp加16 ;若判斷為否,則將小于等于16個字節(jié)數(shù)據(jù)按照通常的方法逐字節(jié)進(jìn)行復(fù)制。綜上所述,在復(fù)制大量數(shù)據(jù)塊時,CPU平均復(fù)制每個字節(jié)所耗的時間大幅減少,同時不會頻繁使用跳轉(zhuǎn)指令;經(jīng)測試,復(fù)制少量字節(jié)的性能略有降低(幾乎可以忽略,因為只執(zhí)行了一個判斷語句),而復(fù)制大塊內(nèi)存數(shù)據(jù)時效率可提高50%以上,節(jié)省了 CPU開銷,提高了復(fù)制大塊內(nèi)存數(shù)據(jù)的效率。有益效果本發(fā)明提供的效率提高的內(nèi)存復(fù)制方法,在復(fù)制大量數(shù)據(jù)塊時,CPU平均復(fù)制每個字節(jié)所耗的時間大幅減少,同時不會頻繁使用跳轉(zhuǎn)指令,節(jié)省了 CPU開銷,提高了復(fù)制大塊內(nèi)存數(shù)據(jù)的效率。


      圖I為本發(fā)明方法的流程圖。
      具體實施例方式下面結(jié)合附圖對本發(fā)明作更進(jìn)一步的說明。如圖I所示為一種效率提高的內(nèi)存復(fù)制方法包括如下步驟(I)判斷count是否大于16 ;(2)若步驟(I)的判斷為是,則按次序?qū)⑦B續(xù)的16個字節(jié)數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址,count=count_16、s=s+16、tmp=tmp+16,返回步驟(I);(3)若步驟(I)的判斷為否,則逐字節(jié)將數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址。以下是根據(jù)上述方法給出的一種程序方案
      4void * memcpy(void * dest,const void *src,size_t count)
      i
      char *tmp, *s; tmp = (char *)dest;s = (char*)src;for(;count>= 16;count-= 16)
      {
      tmp
      = s
      ;tmp[l] = s[l];tmpP] = s[2];tmp[3] = s[3];tmp[4] = s[4];tmp[5] = s[5];tmp[6] = s[6];tmp[7] = s[7];tmP[8] = s[8];tmp[9] = s[9];tmp[10] = s[10];tmp[ll] = s[ll];tmp[12]-s[12];tmp[13] = s[13];tmp[14] = s[14];tmp[15] = s[15];
      tmp 十=16;
      s+=16;
      }
      while (count—)return dest;
      j以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
      權(quán)利要求
      1.一種效率提高的內(nèi)存復(fù)制方法其特征在于包括如下步驟(1)判斷count是否大于N,N > I ;(2)若步驟(I)的判斷為是,則按次序?qū)⑦B續(xù)的N個字節(jié)數(shù)據(jù)從s指針指向的地址復(fù)制到 tmp 指針指向的地址,count=count_N、s=s+N、tmp=tmp+N,返回步驟(I);(3)若步驟(I)的判斷為否,則逐字節(jié)將數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址。
      2.根據(jù)權(quán)利要求I所述的效率提高的內(nèi)存復(fù)制方法其特征在于所述N=16。
      全文摘要
      本發(fā)明公開了一種效率提高的內(nèi)存復(fù)制方法包括如下步驟(1)判斷count是否大于N,N>1;(2)若步驟(1)的判斷為是,則按次序?qū)⑦B續(xù)的N個字節(jié)數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址,count=count-N、s=s+N、tmp=tmp+N,返回步驟(1);(3)若步驟(1)的判斷為否,則逐字節(jié)將數(shù)據(jù)從s指針指向的地址復(fù)制到tmp指針指向的地址。本發(fā)明提供的效率提高的內(nèi)存復(fù)制方法,在復(fù)制大量數(shù)據(jù)塊時,CPU平均復(fù)制每個字節(jié)所耗的時間大幅減少,同時不會頻繁使用跳轉(zhuǎn)指令,節(jié)省了CPU開銷,提高了復(fù)制大塊內(nèi)存數(shù)據(jù)的效率。
      文檔編號G06F9/30GK102929579SQ20121039387
      公開日2013年2月13日 申請日期2012年10月16日 優(yōu)先權(quán)日2012年10月16日
      發(fā)明者姚艷松, 郭立煌, 周建波, 雍太利, 朱學(xué)海, 陳靖公, 王程謙 申請人:國電南京自動化股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1