乙個ntohs函式的實現

2021-05-21 23:01:54 字數 391 閱讀 9430

眾所周知ntohs用來將本機位元組序列轉換為網路位元組序列,如何寫乙個高效能的實現呢?

先寫乙個能正常工作的:

**如下

執行後與系統自帶的對比效能,執行時間輸出如下:

效能相差很多呀,看來得用彙編寫個改進版本

執行結果如下:

效能有所改進,但與系統實現比較依然很慢,並沒有顯著改進效能,看來還得改進,應該是prolog**和epilog**所導致的效能不佳,

只好動用naked的了,將函式屬性設定為naked。

執行比較

效能比系統的更好呀,my god :)

以上執行結果資料都是在debug版本下得出來的,release版本情況好像差不多,以上三種方式效能資料如下:

可見編譯器的優化功能非常強大。

實現乙個Memcpy函式

需要考慮記憶體重疊的情況 includeusing namespace std void memcpy void dst,const void src,size t len void ret dst if dst src else return ret int main 那麼為什麼還要考慮重寫mem...

自己實現乙個printf函式

在arm嵌入式開發環境中,串列埠一般使用arm pl011的uart實現,uart的實現原理就是實現了乙個8bits寬度,32深度的fifo,不停的往螢幕輸出乙個byte,乙個byte。這個就是硬體的實現,那麼軟體是怎麼實現列印 高階程式語言中定義的char,short,int,long,float...

自己實現乙個 atoi 函式

情況一 輸入的字元包含不是數字字元的字元?例如 123adc4 針對這種情況,我們只要加上判斷就行了,只要遇到不是數字字元的直接返回。情況二 如果在數字字元前面有正負號又該怎麼辦?例如 123 123 針對這種情況,我們再加上判斷,判斷字串的第乙個字元是不是正負號,並用乙個標記位flag記錄正負。情...