黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

在關鍵路徑上,編碼需謹慎

系統 2093 0

將大小為1G的src緩沖區中的數據復制到dst緩沖區中,并且跳過所有空格。

下面兩種循環風格,哪一種你更喜歡?

在關鍵路徑上,編碼需謹慎

哪種效率更高呢?Try it~

-----------------------------------

在關鍵數據路徑上,如果需要對每一字節都進行檢查,那么使用的檢查方法需要格外謹慎。在上例中,I直接檢查src[i]是否為空格,II采用了isspace函數來檢查,直接檢查只需要一次比較,而函數調用則需要一次call和一次比較(isspace函數內部)。從理論上分析,后者速度肯定要慢,實際呢?我以為isspace在libc中只是一個宏,查了一下代碼才知道,它定義如下(NOT from glibc):

#define _S 0x08

extern const char *_ctype_;

__CTYPE_INLINE int isspace ( int c)
{
return (c == - 1 ? 0 : ((_ctype_ + 1 )[( unsigned char )c] & _S));
}

點擊查看libc對isspace的完整定義

雖然定義成了一個inline函數,但是依然沒有直接比較來得直接簡單。

簡單地將isspace替換成直接比較,讓我的解壓速度(我在做xxx的解壓)從140MB/s上升到200MB/s,非常不錯。

關鍵路徑上編碼,要減少頻繁的函數調用,不能只要風度不要溫度。

在關鍵路徑上,編碼需謹慎


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論