生成大(dà)量随機字符串不(bù)同實現方式的(de)效率對比 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

生成大(dà)量随機字符串不(bù)同實現方式的(de)效率對比

發表時(shí)間:2020-10-18

發布人(rén):融晨科技

浏覽次數:67

 在(zài)26位英文字母中随即選取10個(gè)字符組成字符串,産生一定數量的(de)唯一字符串,對比幾種方式:

1.使用 System.Security.Cryptography.RNGCryptoServiceProvider 生成 Random 的(de)種子(zǐ) 和(hé / huò) 使用普通聲稱随機數進行對比.

2.使用 IDictionary<TKey , TValue> 其中TKey是(shì) Int 型 存放字符串的(de)HashCode,TValue 是(shì) String 型,存放生成的(de)字符串,通過對比鍵判斷是(shì)否項是(shì)否已經存在(zài) 和(hé / huò) 使用 IList<T> 存儲字符串進行對比.

3.使用随機截取字符串 和(hé / huò) 随機字符串數組索引獲取組成字符串. 生成構建 Random 實例種子(zǐ)的(de)方法:

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 ); } 生成随機字符串的(de)方法: 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( ); }

對比結果: 1.使用 GetRandomSeed( )方法生成 Random 種子(zǐ) 并使用字符截取 使用IDictionary<int , string> 耗時(shí) 20688MS  産生重複項 359  生成項:1000000 2.不(bù)使用 GetRandomSeed( )方法生成 Random 種子(zǐ) 并使用字符截取 使用IDictionary<int , string>  耗時(shí) 1562547MS  産生重複項 127749442  生成項:100000 3.使用 GetRandomSeed( )方法生成 Random 種子(zǐ) 并使用字符串數組 使用IDictionary<int , string>  耗時(shí)36125MS  産生重複項 381  生成項:1000000(使用Char數組效率更低,随機取得Char轉換成String時(shí)要(yào / yāo)進行裝箱) 4.使用GetRandomSeed( )方法生成 Random 種子(zǐ) 并使用字符截取 使用IList<string> 耗時(shí) 214719MS  産生重複項2 生成項:100000(生成項越多耗時(shí)越長) 可見使用 System.Security.Cryptography.RNGCryptoServiceProvider 生成 Random 種子(zǐ) 産生的(de)效率要(yào / yāo)高很多,特别是(shì)要(yào / yāo)連續生成大(dà)量的(de)随機數,因爲(wéi / wèi) Random 生成值的(de)重複率非常低. 使用字符串的(de)HashCode對比字符串比直接對比字符串效率要(yào / yāo)高很多. 使用字符串截取比使用字符串數組效率要(yào / yāo)高點. function forumhottag_callback(data){ tags = data; } parsetag();

 
昆明軟件開發公司中的(de)佼佼者,緻力定制軟件開發,昆明軟件開發請聯系昆明融晨科技有限公司,電話:15987118523。

相關案例查看更多