1. 程式人生 > >String的幾種比較方法耗時對比

String的幾種比較方法耗時對比

本文測試的字串比較方法有: string.Compare : 文件定義:比較兩個字串並返回其相對排序順序的指示。 Compare會通過傳遞進來的文化資訊來呼叫對應的比較。 文化資訊CultureInfo類文件定義(有興趣可以瞭解): 提供有關特定區域性的資訊(對於非託管程式碼開發,則稱為“區域設定”)。 這些資訊包括區域性的名稱、書寫系統、使用的日曆、字串的排序順序以及對日期和數字的格式化設定。 string.CompareOrdinal文件定義:通過計算每個字串中相應 String 物件的數值來比較兩個 Char 物件。 CompareOrdinal是將整個字串每5個字元(10個位元組)分成一組,然後逐個比較,找到第一個不相同的ASCII碼後退出迴圈。
string.CompareTo : 文件定義: 將此例項與指定的 String 物件進行比較,並指示此例項在排序順序中是位於指定的字串之前、之後還是與其出現在同一位置。 StringcompareTo其實就是依次比較兩個字串ASC碼。如果兩個字元的ASC碼相等則繼續後續比較,否則直接返回兩個ASC的差值。 string.Equals : 文件定義:  確定兩個String物件是否具有相同的值。 a.Equals : 文件定義:確定此例項是否與另一個指定的String物件具有相同的值。(上一個是靜態方法,這是例項方法) a.StartsWith("b") : 文件定義:確定此字串例項的開頭是否與指定的字串匹配。 a.StartsWith("b",System.StringCompare.Ordinal)
: 文件定義:確定在使用指定的比較選項進行比較時此字串例項的開頭是否與指定的字串匹配。 Ordinal :  使用序號(二進位制)排序規則比較字串。 StringComparer 返回 Ordinal 屬性執行與語言無關的簡單位元組比較。 比較字串生成的以程式設計方式或比較區分大小寫的資源,如密碼時,這是最合適。 a.EndsWith("b") a.EndsWith("b",System.StringCompare.Ordinal) 附StringComparison列舉( 指定供 String.Compare 和 String.Equals 方法的特定過載使用的區域性、大小寫和排序規則。
):
成員名稱 說明
CurrentCulture

使用區分割槽域性的排序規則和當前區域性比較字串。

CurrentCultureIgnoreCase

通過使用區分割槽域性的排序規則、當前區域性,並忽略所比較的字串的大小寫,來比較字串。

InvariantCulture

使用區分割槽域性的排序規則和固定區域性比較字串。

InvariantCultureIgnoreCase

通過使用區分割槽域性的排序規則、固定區域性,並忽略所比較的字串的大小寫,來比較字串。

Ordinal

使用序號(二進位制)排序規則比較字串。

OrdinalIgnoreCase

通過使用序號(二進位制)區分割槽域性的排序規則並忽略所比較的字串的大小寫,來比較字串。

測試: 測試環境:PC端 VS2013 迴圈次數: const int Num = 10000000; 比較的字串: string str1 = "abcdefg"; string str2 = "abcwqer"; string str3 = "abcdefg" 比較方法: for (int i = 0; i < Num;i++ ) {string.Compare(str1, str2); }(迴圈裡為以上比較的方法) 耗時: 不同字串: Compare耗時: 1359(毫秒) CompareOrdinal耗時:78(毫秒) CompareTo耗時:1360 (毫秒) a.StartsWith("b")耗時:1593(毫秒) a.StartsWith("b", System.StringComparison.Ordinal)耗時:110(毫秒) a.EndsWith("b")耗時:3078(毫秒) a.EndsWith("b",System.StringCompare.Ordinal)耗時:109(毫秒) string.Equals耗時:78(毫秒) a.Equals耗時:62(毫秒) 相同字串: Compare耗時: 1953(毫秒) CompareOrdinal耗時:16(毫秒) CompareTo耗時:1938 (毫秒) a.StartsWith("b")耗時:1609(毫秒) a.StartsWith("b", System.StringComparison.Ordinal)耗時:110(毫秒) a.EndsWith("b")耗時:3031(毫秒) a.EndsWith("b",System.StringCompare.Ordinal)耗時:109(毫秒) string.Equals耗時:31(毫秒) a.Equals耗時:16(毫秒) 總結: (1)當我們比較字串大小時,儘量使用CompareOrdinal方法。 (2)Compare會通過傳遞進來的文化資訊呼叫對應的比較,所以進行國際化的時候,字串比較必須使用String.Compare靜態方法。因為Compare是靜態的,建議儘可能的使用String.Compare代替CompareTo方法。 (3)儘量使用a.StartsWith("b", System.StringComparison.Ordinal)和a.EndsWith("b",System.StringCompare.Ordinal)方法,提高效率。

相關推薦

String比較方法耗時對比

本文測試的字串比較方法有: string.Compare : 文件定義:比較兩個字串並返回其相對排序順序的指示。 Compare會通過傳遞進來的文化資訊來呼叫對應的比較。 文化資訊CultureInfo類文件定義(有興趣可以瞭解): 提供有關特定區域性的資訊(對於非託管程

String比較方法對比(Compare,CompareTo, CompareOrdinal、Equals)

String類字串比較大概有4種方法:Compare(),CompareTo(), CompareOrdinal()和Equals(). Compare()方法是CompareTo()的靜態版本.而Equals()與"=="是等價的,只要使用"=="運算子,就會呼叫Equa

非線性優化-優化方法比較(1)

我們每個人都會在我們的生活或者工作中遇到各種各樣的最優化問題,比如每個企業和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優化方法是一種數學方法,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標達到最優的一些學科的總稱。隨著學習的深入,博

String轉int的常用方法

String型別轉int型別通常需要int的包裝類Integer,該類有三個方法可以實現這種轉換,分別為decode(String s)、parseInt(String s)、valueOf(Stri

JPA中比較好的設定資料庫連線事務隔離級別的方法

在使用JPA時,有時候需要設定連線的事務隔離級別,以下幾種方法可供參考。 1). 直接在DataSource上設定DataSource source = (javax.sql.DataSource)

String常用方法

public class Demo1 {public static void main(String[] args) {String stra = "Hello,World!";String strb = new String("Hello,World!");String s

火狐瀏覽器如何js關閉窗口的解決方法

div dom style itl 希望 mic rdquo nav 瀏覽器 今天在項目上有一個頁面要求在幾秒後自動關閉,想著還比較簡單,用window.close()就可以了,但是用IE/谷歌/火狐瀏覽器試了一下,發現IE可以,谷歌用網上的兼容方法也可以實現,但是火狐這裏

for循環的比較

ref -s for 相對 http 即使 turn .com urn 對一個集合遍歷的3種方法:1、for(int i=0;i<list.size();i++) 2、for(int i=0,len=list.size();i<len;i++) 3、for (

iOS 加密方法

字符 shared 唯一性 append utf8 img ict nsh chain iOS常見的幾種加密方法 普通加密方法是講密碼進行加密後保存到用戶偏好設置中 鑰匙串是以明文形式保存,但是不知道存放的具體位置 一. base64加密 base64 編碼是現代密碼學的

Linux操作系統的引導方法

Linux操作系統的幾種引導方法 方法1:引導軟盤 (1)在下用mkbootdisk制作。 (2)如果硬盤引導信息丟失,無法進入Linux系統做引導軟盤,對於RH,用RedHat 光盤引導進入secure模式,當詢問是否將硬盤中的linux系統設置為當前環境,選“是”,這時的系統進

多線程有實現方法?同步有實現方法?(被問到)

所有 正在 () read 異常 同步 -h 競爭 sync 多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口 同步的實現方面有兩種,分別是synchronized,wait與notify wait():使一個線程處於等待狀態,並且釋放所持有的對象的

html中設置錨點定位的常見方法

element 針對 htm com script int nbsp onclick .get 1,使用id定位: <a href="#1F" name="1F">錨點1</a> <div name="1F"> <p>

字符串截取的基本方法

字符串截取 clas mov logs reg -a expr body regex 分享幾個經常用到的字符串的截取 string str="123abc456";int i=3;1 取字符串的前i個字符 str=str.Substring(0,i); //

常見的最優化方法(梯度下降法、牛頓法、擬牛頓法、共軛梯度法等)

linear 樣本 計算 每次 理學 系統 是否 底部 有效 我們每個人都會在我們的生活或者工作中遇到各種各樣的最優化問題,比如每個企業和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優化方法是一種數學方法,它是研究在給定約束之下如何尋求某些因素(的量),以

字節流的三操作方法效率對比

copyfile ndt 文件 流復制 share pri file input time public class IOStream { public static void main(String[] args) throws IOException {

清除浮動的常用方法

src 添加 環繞 blog img eight 方式 內聯元素 特性 首先,浮動這個樣式的出現,僅僅只是為了實現圖文環繞的效果,現在大多時利用浮動來布局; 浮動:   使元素推理文檔流,按照指定方向發生移動;   遇到父級邊界或者相鄰的浮動元素會停下來; 浮動的特性:  

SVN被鎖定的解決方法

情況 ctr 點擊 tsd lean 一級目錄 svn 開啟 projects 用SVN經常出現被鎖定而無法提交的問題,選擇解鎖又提示沒有文件被鎖定,很是頭疼。 這裏整理了一下SVN 被鎖定的幾種解決方法: 1.出現這個問題後使用“清理”即"Clean up"功能,如果還

ASP.NET中彈出消息框的常見方法

服務 復制代碼 添加 新的 警告 完成 方法 rip 最簡 在ASP.NET網站開發中,經常需要使用到alert消息框,尤其是在提交網頁的時候,往往需要在服務器端對數據進行檢驗,並給出提示或警告。 這裏,僅介紹幾種不同的實現方法。 1、眾所周知的方法是采用如下代碼來實現:

sql 的常用方法

dataview 釋放資源 lose 總結 dap bool .sql res mar 第一個項目總結基類:database:主要是定義有關數據庫的方法: 1.打開數據庫 public static void Open() {

元素水平垂直居中的常用方法

round IT spl translate 彈性 lex align mar con <!DOCTYPE html> <html> <head> <meta charset="UTF-8">