1. 程式人生 > >C#中“EQUALS”與“==”的速度比較

C#中“EQUALS”與“==”的速度比較

最初接觸C#時就一直疑惑,比較字串的方法:“Equals”與“==”在比較時效能有什麼區別呢?相信這個問題也曾困惑著許多人,那麼我們就一起來探討下:

比較一個string是否等於一個值,最初接觸C#的人會這麼寫:

string myStr = "value"; if (myStr.Equals("value")) { } if (myStr == "value") { }

然後,會有人笑你很菜,得知把要判斷的value寫在前面效能高些,要這樣寫:

string myStr = "value"; if ("value".Equals(myStr)) { } if ("value" == myStr) { }

但或許他也只是從那個笑他很菜的前輩那裡得知應該這樣寫,而正確與否、差別,沒有真正自己去測試過。這裡先不告訴大家上面“前輩”說的正確與否,我們來測試下:

public class Program { public static void Main(
string[] args) { int time = 100000000; int start, end, i; bool result; string myStr = "that's funny"; Console.Title = "Equals & == test"; //////////////////////////////////////////////////////////////// // True test 1 - string.Equals("value") //////////////////////////////////////////////////////////////// // 獲取程式開始後經過的毫秒數 start = System.Environment.TickCount;
// 判斷一次是否相等幾乎不需要時間,所以我們讓計算機判斷一億次, // 這真是個天文數字,囧 for (i = 0; i < time; i++) {

相關推薦

C#EQUALS“==”的速度比較

最初接觸C#時就一直疑惑,比較字串的方法:“Equals”與“==”在比較時效能有什麼區別呢?相信這個問題也曾困惑著許多人,那麼我們就一起來探討下: 比較一個string是否等於一個值,最初接觸C#的人會這麼寫: string myStr = "value";

C#靜態非靜態方法比較

通過 bsp 不同 oss 分配 htm 不能 size tar C#靜態方法與非靜態方法的區別不僅僅是概念上的,那麽他們有什麽具體的區別呢?讓我們通過本文向你做一下解析。 C#的類中可以包含兩種方法:C#靜態方法與非靜態方法。那麽他們的定義有什麽不同呢?他們在使用上

C++陣列STLvector和array的比較

我的Github個人部落格 ----------------------------------- 阮一峰的網路日誌 ----------------------------------- 劉未鵬 | Mind Hacks ---------------------------

C++】C++constconstexpr的比較

先說結論相同點:const和consexpr都是用來定義常量的。不同點:const宣告的常量,初始值引用的物件不一定是一個常量;constexpr宣告的常量,初始值一定是常量表達式。   constexpr是c++11標準新增的關鍵字。   之所以說const宣告的常量,初始值不一

物件比較equals==的區別

關於變數之間的比較,可以分為基礎型別變數的比較和物件之間的比較。 對於基本型別來說,他們儲存在jvm的棧中,因此比較的是變數的內容,也就是比較的變數的值。 對於引用型別來說,因為物件內容儲存在jvm的堆中,棧中只是儲存物件的引用(地址),無論是==還是equals比較

C#StructClass的區別

而是 適用於 ack 定義 cts 多態 支持 關鍵字 for class和struct最本質的區別是class是引用類型,而struct是值類型,它們在內存中的分配情況有所區別。 什麽是class? class(類)是面向對象編程的基本概念,是一種自定義數據結構類型,通

C#outref區別

erro 變量 但是 color 賦值 運行 網上 ann amp 一、ref(參考)與out區別 1、out(只出不進) 將方法中的參數傳遞出去,在方法中將該參數傳遞出去之前需要在該方法起始賦初值;在方法外傳遞的該參數可以不用賦值; 簡單理解就是:將一個東西拋出去之前必須

C#結構的區別實例分析

類與結構 main bds nbsp 模擬鼠標 指向 img adding 區別 類與結構是C#程序設計中基本的數據類型,而初學者往往不能很好的分清二者之間的區別。本文就以附帶實例形式加以說明。具體如下: 一、基本概念: 類: 引用類型,存儲在堆中,棧中存儲引用地址

C#PredicateFunc泛型委托的用法實例

public pan html 加水印 pre wid bcf 委托 ora 本文以實例形式分析了C#中Predicate<T>與Func<T, bool>泛型委托的用法,分享給大家供大家參考之用。具體如下: 先來看看下面的例子:static vo

C++繼承抽象類

post dog urn 針對 delet rtu 繼承 prot virt 繼承語法格式如下: class 子類名稱 : 繼承方式(public private protected 三種) 父類名稱 純虛函數格式: virtual 返回值類型 函數名(參數列表)= 0;含

C++compilebuild的區別

build com www ads upload 文件 font mil .com 我在前面的博文就提到了GCC編譯器工作的四個階段:預處理、編譯、匯編、鏈接。 感興趣的同學可以參考:http://www.cnblogs.com/mlgjb/p/7708007.html

【轉】C#FuncAction的理解

.net ring UNC 簡單 代碼 操作 不必要 返回值 tps 原文地址:https://www.cnblogs.com/ultimateWorld/p/5608122.html Action 與 Func是.NET類庫中增加的內置委托,以便更加簡潔方便的使用委托。最

Java equals 和 == 的比較

ron 博客 自動裝箱 color bsp target net adf log 先來看這樣一個題目,假設有以下代碼 下列選項中返回false的語句是? String s = "hello"; String t = “hello”; cha

C#ArrayList string、string[]數組 的轉換

list string ray AR nbsp 數組 arr spl oar 1、ArrarList 轉換為 string[] :   ArrayList list = new ArrayList();   list.Add("aaa");   list

關於equals==的比較

最近在學習中遇到一個問題,兩個值相同的Integer型值進行==和equals比較時,發現了其中一些詭異的地方,然後就學習了一下有關Integer自動拆裝箱和常量池的概念   先來一個demo說明詭異在何處: package cn.java.test; public cl

c#委託多執行緒的實質

delegate(委託)的概念,.Net的委託本質上就是指向函式的指標,只不過這種指標是經過封裝後型別安全的。委託和執行緒是兩個不同的概念,執行緒是動態的,委託就是一個或一組記憶體地址,是靜態的。執行緒執行時如果遇到了指向函式的指標就執行這個函式。.Net為了方便程式設計,給委託賦予了兩種方式以供呼

c++ char string 之間的相互轉換

第一部分: 將  char *    或者    char []   轉換為  string 可以直接賦值,轉換。       第二部分: 將  &n

C++繼承組合的區別

物件和類是C++中的重要內容,物件(Object)是類(Class)的一個例項(Instance)。面向物件設計的重點是類的設計,而不是物件的設計。對於C++程式而言,設計孤立的類是比較容易的,難的是正確設計基類及其派生類。這就和“繼承”(Inheritance)和“組合”(Composition)

C#boolBoolean有什麼區別

    首先結論:bool和Boolean(System.Boolean)是完全一樣的  MSDN中解釋bool與Boolean的關係是:bool關鍵字是System.Boolean的別名。實際使用無任何差別。它們的成員也是一樣的。    

C++巨集函式的區別

巨集在編譯時就被替換成它內部的語句了,而函式是執行時呼叫的 所以如果是簡單的東西就寫成巨集,這樣沒有呼叫函式的開銷,效率會高一些。相反,由於巨集每被呼叫一次,就相當於把程式碼複製一份,所以如果比較複雜的巨集被多次呼叫的話,會增加程式碼的體積。因此,太複雜的運算就寫成函式比較好了。 另外,要注意在巨集