知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
生成大量隨機(jī)字符串不同實(shí)現(xiàn)方式的效率對(duì)比
發(fā)表時(shí)間:2020-10-18
發(fā)布人:葵宇科技
瀏覽次數(shù):67
在26位英文字母中隨即選取10個(gè)字符組成字符串,產(chǎn)生一定數(shù)量的唯一字符串,對(duì)比幾種方式:
1.使用 System.Security.Cryptography.RNGCryptoServiceProvider 生成 Random 的種子 和 使用普通聲稱隨機(jī)數(shù)進(jìn)行對(duì)比.
2.使用 IDictionary<TKey , TValue> 其中TKey是 Int 型 存放字符串的HashCode,TValue 是 String 型,存放生成的字符串,通過(guò)對(duì)比鍵判斷是否項(xiàng)是否已經(jīng)存在 和 使用 IList<T> 存儲(chǔ)字符串進(jìn)行對(duì)比.
3.使用隨機(jī)截取字符串 和 隨機(jī)字符串?dāng)?shù)組索引獲取組成字符串. 生成構(gòu)建 Random 實(shí)例種子的方法:
static int GetRandomSeed( ) { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider( ); rng.GetBytes( bytes ); return BitConverter.ToInt32( bytes , 0 ); } 生成隨機(jī)字符串的方法: static string GetRandomString( ) { StringBuilder sbPwd = new StringBuilder( ); Random random = new Random( GetRandomSeed( ) ); for ( int i = 0 ; i < length ; i++ ) { sbPwd.Append( strSource.Substring( random.Next( 0 , 25 ) , 1 ) ); //sbPwd.Append( sourceArray[random.Next( 0 , 25 )] ); } return sbPwd.ToString( ); }
對(duì)比結(jié)果: 1.使用 GetRandomSeed( )方法生成 Random 種子 并使用字符截取 使用IDictionary<int , string> 耗時(shí) 20688MS 產(chǎn)生重復(fù)項(xiàng) 359 生成項(xiàng):1000000 2.不使用 GetRandomSeed( )方法生成 Random 種子 并使用字符截取 使用IDictionary<int , string> 耗時(shí) 1562547MS 產(chǎn)生重復(fù)項(xiàng) 127749442 生成項(xiàng):100000 3.使用 GetRandomSeed( )方法生成 Random 種子 并使用字符串?dāng)?shù)組 使用IDictionary<int , string> 耗時(shí)36125MS 產(chǎn)生重復(fù)項(xiàng) 381 生成項(xiàng):1000000(使用Char數(shù)組效率更低,隨機(jī)取得Char轉(zhuǎn)換成String時(shí)要進(jìn)行裝箱) 4.使用GetRandomSeed( )方法生成 Random 種子 并使用字符截取 使用IList<string> 耗時(shí) 214719MS 產(chǎn)生重復(fù)項(xiàng)2 生成項(xiàng):100000(生成項(xiàng)越多耗時(shí)越長(zhǎng)) 可見(jiàn)使用 System.Security.Cryptography.RNGCryptoServiceProvider 生成 Random 種子 產(chǎn)生的效率要高很多,特別是要連續(xù)生成大量的隨機(jī)數(shù),因?yàn)?Random 生成值的重復(fù)率非常低. 使用字符串的HashCode對(duì)比字符串比直接對(duì)比字符串效率要高很多. 使用字符串截取比使用字符串?dāng)?shù)組效率要高點(diǎn). function forumhottag_callback(data){ tags = data; } parsetag();
相關(guān)案例查看更多
相關(guān)閱讀
- 小程序開(kāi)發(fā)
- 云南網(wǎng)站建設(shè)公司地址
- 昆明網(wǎng)站設(shè)計(jì)
- 云南網(wǎng)站建設(shè)方案 doc
- 網(wǎng)絡(luò)公司哪家好
- 小程序
- 云南小程序設(shè)計(jì)
- 汽車拆解管理系統(tǒng)
- 云南小程序開(kāi)發(fā)制作
- 云南軟件設(shè)計(jì)
- 報(bào)廢車拆解系統(tǒng)
- 云南網(wǎng)站建設(shè)優(yōu)化
- 昆明小程序開(kāi)發(fā)
- 網(wǎng)站沒(méi)排名
- web教程
- 網(wǎng)站建設(shè)服務(wù)公司
- 汽車拆解管理軟件
- APP
- vue開(kāi)發(fā)小程序
- 網(wǎng)站建設(shè)專業(yè)品牌
- uniapp開(kāi)發(fā)小程序
- 云南網(wǎng)絡(luò)營(yíng)銷
- 前端技術(shù)
- 霸屏推廣
- 政府網(wǎng)站建設(shè)服務(wù)
- 小程序開(kāi)發(fā)費(fèi)用
- 開(kāi)發(fā)制作小程序
- 報(bào)廢車管理系統(tǒng)
- 云南小程序開(kāi)發(fā)公司哪家好
- 云南網(wǎng)站建設(shè)公司