今天是聖誕節耶!jingle bell jingle bell .....
上週遇到乙個問題,用list集合removeall方法去除滿足條件的資料,結果那真是有點慢,慢的我都自慚形穢了,本以為可以翹著二郎腿,結束任務,結果出現這大的問題,嚇得我立馬放下腿。
一查發現萬級的資料中過濾萬級左右資料,嗯,這也是第一次碰到,沒經驗,不知者無過。在我努力的結晶下,結果還是滿意的。
真相就是用haseset的contains 過濾代替list的removeall條件過濾,為什麼呢,那就要看原始碼是如何實現的了。
所以今天就來傳授經驗,接招。
兩種方法做對比。時間是多次執行取的平均值,保證有效性,從統計表中可以看到,資料量越大,差異越明顯。
資料量
過濾量list過濾所用time(ms)
hashse過濾所用time(ms)105
1左右1左右
10050
1左右 有時候2
1左右1000
50018左右
1左右 有時候2
10000
5000
1650左右
2~4左右
100000
50000
195439左右
30左右
所以你知道當時有多慢了吧。
測試demo,主要**:
public listgetresulthashdata(listalllist, hashsetfilterlist)注意的是,model要重寫gethashcode以及equeals,不重寫就沒有過濾效果原因就是預設比較的是值,在比較其他自定義物件時就是比較引用位址。}return
molist;
}
重寫之後目的就是比較兩個物件的value值是否相等
有詳細解釋
public你沒看錯,靈魂**就幾行,就是這麼的簡單。嗯,下班了class
model
public
string name
public
string desc
public
override
intgethashcode()
public
override
bool equals(object
obj)
}
如何快速 高效地閱讀文獻資料
1。由點到面。選工作實踐中的疑點,熱點,由乙個小枝節,檢索較全的文獻,一般近期的20 篇左右已經相當多了。之所以不必在意3年以前的,是因為知識更新非常快,且網上能查到的多為近幾年的全文。學習別人是怎麼發現解決問題的。知道目前對這個問題的共同看法,和分歧。然後,擴充套件開,根據興趣和研究的目的,知道,...
如何快速高效的群發Email
如何快速高效的 email 宣傳中,email營銷是成本最低,而回報率又相對比較高的方法.特別對電子商務型別的 是最行之有效的方法.我們不僅常向自己的會員傳送email,手裡也會有一批資料巨大的email資料.那麼如何批量的快速的向這些人傳送我們的email呢.經過我們寫程式,批量一封封的發,速度大...
如何在生產環境刪除百萬級以上的資料
公司的使用者被人惡意註冊了,user id是連續著的,這些使用者現在要清理掉,但是資料量太大,如何快速生成200w的delete語句呢?ps 生產環境不建議delete from user where user id and user id sqlyog環境下快速生成語句 在伺服器上 select ...