服務端每次處理客戶端請求的執行實現發現已接近100毫秒左右,這尼瑪真不能忍。起初還懷疑是與memcache服務進行通訊上的問題,結果經過一步步打log輸出各個環節的呼叫時間,最終定位到了乙個c函式memset !!!占用了每次處理的99%的時間!
每次在收到服務端的請求時都對乙個50m左右的資料執行了一次memset.看來這種做法對於大資料來講是件奢侈的事情。看了下memset原始碼實現,至少要呼叫bytesize/4次的迴圈...時間都花在這了。
最後拋棄了memset,取而代之將資料的關鍵成員乙個個手動賦值,執行時間降到了<2毫秒...
所以面對這次血粼粼的教訓,要慎用memset處理大的資料。
陰溝裡翻船,浪費乙個小時時間
做了這麼久的專案,在公司,不大不小的問題基本都能短期內解決或者提供方案,尤其給同事提供,也算是得心應手,可今天自己用一小時的時間買了個不爽。也許在博友嚴重,這種低智商的錯誤不應該發生,但是卻發生在我這個智商不是太天才的人身上了。儲存過程除錯 code 1alter procedure dbo p c...
C函式之memset 函式用法
c函式之memset 函式用法 1.功能 將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,其返回值為指向s的指標 2.需要的標頭檔案 or 3.函式原型 void memset void s,int c...
小白學c 之建構函式裡的虛函式
include include include using namespace std class base virtual void logbase class derive public base int main int argc,const char argv 這段 的結果是列印 from ...