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

2021-08-23 14:47:55 字數 664 閱讀 3044

將大小為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) 雖然定義成了乙個inline函式,但是依然沒有直接比較來得直接簡單。

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

關鍵路徑上編碼,要減少頻繁的函式呼叫,不能只要風度不要溫度。

在基類構造器中呼叫虛方法需謹慎

最近,在基類的建構函式中呼叫虛方法時,發現了乙個問題。先把問題重現如下 class program public class people protected people public virtual void say 歲了 age public class chinese people publ...

關鍵路徑上找時間,非關鍵路徑上找資源

專案在執行的過程中,必然會出現問題,有些時候是因為資源不夠,資源調配出現問題,有些時候是因為專案估算時間出現了問題,或者專案中出現了未能夠 到的風險,而這些都是專案計畫的時候未能做好所導致的問題,那麼做為乙個成功的專案經理,必須要學會在專案執行階段通過自己強有力的手段來解決這些問題。資源不夠怎麼辦?...

關鍵路徑在演算法題中的應用

1 aov和aoe網 aov是指的用頂點 vertex 表示活動,用邊集表示活動間優先順序的有向圖,圖中不會有環。aoe是指用帶權的邊集 edge 表示活動,用頂點表示事件的有向圖,邊權表示 完成活動所需要的時間。aoe網表示乙個工程的進行過程,它也不應該有環,一般來說它只有乙個源點 入度為零 和乙...