在用人腦判斷效率瓶頸之前,請先用Profiler工具。
if的命中率的問題吧
用C語言1000行源碼能完成的工作千萬不要用C++重寫!
引用 7 樓 zhao4zhong2 的回復:用C語言1000行源碼能完成的工作千萬不要用C++重寫! 您回錯帖了吧!
這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。
我只注意到樓主提供圖片中的 6.1% 32 …… 39.1% 40 ……
引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。
引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。 test & jne/je 不可能會帶來這么大的開銷,可能這個問題不在於 line 26,而在於 line……
if (cell_id_array_[bvci] == 0) { helper_->update_bssgp_dl_unitdata__stats(BSSGP_DL_UNITDATA_CELL_UNFOUND); return; } bssgp_unitdata_head.cell_id = cell_id_array_[bvci];
擒賊先擒王!
單純看匯編不會這么慢,是不是后面的跳轉遇到上下文切換了。Lz多測幾次,取個平均看看
引用 15 樓 raison_x 的回復: 引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。 test & jne/je 不可能會帶來這么大的開銷,可能這個問題不在於 line 26,而在於 line…… 這個可能在點子上了,我也懷疑是數組取值的問題,這個數組有1M,參看下面一個64k的數組取值: ...... 是否可能頁面錯誤導致?這一塊我不是很熟悉,但是我將windows的虛擬內存完全禁用后,程序的頁面錯誤變化不大。 是否可能CPU cache命中率太低導致?對於這種大數組,不可能全部讀進cache。
引用引用 15 樓 raison_x 的回復: 引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。 test & jne/je 不可……
引用 22 樓 raison_x 的回復:引用引用 15 樓 raison_x 的回復: 引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。 ……
引用 22 樓 raison_x 的回復: 引用引用 15 樓 raison_x 的回復: 引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么一個不合情理的開銷,心里頭不舒服。 test & jne/je 不可…… “如果你監測到了頁面錯誤較多,說明內存吃緊”,這句是錯誤的。 以下問題搞不明白: 將windows虛擬內存完全禁用后,內存會交換到什么地方? 如果沒有磁盤分頁文件可以交換,為什么還會出現page fault?
引用引用 22 樓 raison_x 的回復: 引用引用 15 樓 raison_x 的回復: 引用 13 樓 moolleychean 的回復:引用 11 樓 raison_x 的回復:這個差別貌似可以忽略不計。 那個1.1%就算降到0.1%也沒有意義。 道理沒錯,不是主要的開銷,但是不明不白的出現這么……
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。
添加到收藏夹 *