知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(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 的種子 和 使用普通聲稱(chēng)隨機(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è)優(yōu)化
- 微信小程序
- 文山小程序開(kāi)發(fā)
- 網(wǎng)站建設(shè)哪家強(qiáng)
- 昆明做網(wǎng)站建設(shè)的公司排名
- 網(wǎng)站建設(shè)首頁(yè)
- 報(bào)廢車(chē)回收管理軟件
- 網(wǎng)站建設(shè)報(bào)價(jià)
- 制作一個(gè)小程序
- 云南網(wǎng)站維護(hù)
- 云南小程序開(kāi)發(fā)費(fèi)用
- 英文網(wǎng)站建設(shè)公司
- 云南小程序制作
- 云南網(wǎng)站建設(shè)專(zhuān)家
- 貴州小程序開(kāi)發(fā)
- 二叉樹(shù)
- php網(wǎng)站
- 電商網(wǎng)站建設(shè)
- 云南小程序被騙蔣軍
- 支付寶小程序被騙
- 小程序定制開(kāi)發(fā)
- 云南小程序開(kāi)發(fā)制作公司
- 昆明小程序公司
- 云南網(wǎng)站建設(shè)開(kāi)發(fā)
- 云南網(wǎng)站開(kāi)發(fā)
- 網(wǎng)絡(luò)公司
- 網(wǎng)站建設(shè)價(jià)格
- 云南網(wǎng)站建設(shè)方案 doc
- 云南小程序開(kāi)發(fā)公司推薦