生成大量隨機字串不同實現方式的效率對比

2021-04-15 14:35:49 字數 1169 閱讀 5323

生成大量隨機字串不同實現方式的效率對比

在26位英文本母中隨即選取10個字元組成字串,產生一定數量的唯一字串,對比幾種方式:

1.使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 的種子 和 使用普通聲稱隨機數進行對比.

2.使用 idictionary其中tkey是 int 型 存放字串的hashcode,tvalue 是 string 型,存放生成的字串,通過對比鍵判斷是否項是否已經存在 和 使用 ilist儲存字串進行對比.

3.使用隨機擷取字串 和 隨機字串陣列索引獲取組成字串.

生成隨機字串的方法:

static

string

getrandomstring( )

return

sbpwd.tostring( );}

對比結果:

1.使用 getrandomseed( )方法生成 random 種子 並使用字元擷取 使用idictionary耗時 20688ms  產生重複項 359  生成項:1000000

2.不使用 getrandomseed( )方法生成 random 種子 並使用字元擷取 使用idictionary耗時 1562547ms  產生重複項 127749442  生成項:100000

3.使用 getrandomseed( )方法生成 random 種子 並使用字串陣列 使用idictionary耗時36125ms  產生重複項 381   生成項:1000000(使用char陣列效率更低,隨機取得char轉換成string時要進行裝箱)

4.使用getrandomseed( )方法生成 random 種子 並使用字元擷取 使用ilist耗時 214719ms  產生重複項2 生成項:100000(生成項越多耗時越長)

可見使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 種子 產生的效率要高很多,特別是要連續生成大量的隨機數,因為 random 生成值的重複率非常低.

使用字串的hashcode對比字串比直接對比字串效率要高很多.

使用字串擷取比使用字串陣列效率要高點.

生成構建 random 例項種子的方法:

static

intgetrandomseed( )

生成大量隨機字串不同實現方式的效率對比

在26位英文本母中隨即選取10個字元組成字串,產生一定數量的唯一字串,對比幾種方式 1.使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 的種子 和 使用普通聲稱隨機數進行對比.2.使用 idictionary其中t...

生成隨機字串

原文出處 估摸著以後極有可能使用到,於是寫了乙個生成隨機字串的函式。可以自定義生成規則,生成字串長度。模仿了ms的函式風格,生成規則使用巨集的或且規則,返回值使用了布林型。這裡使用布林返回可能作用不大。直接貼 吧,同樣是兩個檔案。randomstring.h pragma once define r...

生成隨機字串

產生隨機字串,可用來自動生成密碼 預設長度6位 字母和數字混合 param string len 長度 param string type 字串型別 0 字母 1 數字 其它 混合 param string addchars 額外字元 return string function rand stri...