for的效率測試和結果,分享一下

2022-01-13 17:08:29 字數 2164 閱讀 3739

之前一直認為

for (int i = 0, h = arr.count; i < h; i++)

和for (int i = 0; i < arr.count; i++)

兩種寫法,在c#裡應該是差不多的,今天突然有人問,就寫了個程式測試了一下,結果出乎我的意料

如果arr是list,前者的效率比後者高大約一倍,如果arr是string,兩者效率基本差不多

測試**:

int tnum = 100000; //

新增或查詢的次數

int outnum = 10; //

外層迴圈次數

list

arr = new list();

for(int i=0;i)

arr.add(i.tostring());

string arr2 = new

string

[tnum];

for(int j=0;j)

watch.stop();

console.writeline(msg + "

耗時:" +watch.elapsedticks.tostring());

msg = "

.count ";

watch.reset();

watch.start();

for (int i = 0; i < arr.count; i++)

watch.stop();

console.writeline(msg + "

耗時:" +watch.elapsedticks.tostring());

msg = "

length ";

watch.reset();

watch.start();

for (int i = 0; i < arr2.length; i++)

watch.stop();

console.writeline(msg + "

耗時:" +watch.elapsedticks.tostring());

}

發這個帖的意思是,要養成良好的**習慣,

當然,這個不是影響**效能的重點,只是平時寫**時,順手就寫上效率較高的**,會更好。

類似的提公升效率的地方,還有拼接字串時,值型別一定要加上tostring()

比如用:string a = "aa" + 123.tostring();

而不是用string a = "aa" + 123

再比如:

字串比較或查詢,**上stringcomparison.ordinal引數如果要忽略大小寫,請使用stringcomparison.ordinalignorecase

比如要使用:str.indexof("abc", stringcomparison.ordinal)

而不是使用:str.indexof("abc"),這個等於str.indexof(value,stringcomparison.currentculture)

stringcomparison.currentculture:使用區域敏感排序規則和當前區域比較字串

stringcomparison.ordinal:使用序號排序規則比較字串

再帖乙個好習慣:

hashtable、dictionary、sortedlist、sorteddictionary等字典使用 a、使用字典的trygetvalue方法,如:

dictionaryabc;

string a;

if(!abc.trygetvalue(key, out a))else

而不要用下面的**,因為下面的**重複查詢了2次key:

if(!abc.containkeys(key))

else

b、刪除字典的key時,直接使用remove方法,不要事先判斷,比如:

dictionaryabc;

if(abc.remove(key))else

c、插入元素時,直接使用this[key] = value,如:

abc[key] = value;// 注意需求,如果允許覆蓋才可以用

而不需要:if(!abc.containskey(key))abc.add(key, value);

反編譯**,可以看到add和this是呼叫同乙個方法的

**:

思考一下 的結果

看到這個題的第一眼,我想都沒寫直接就是false,不就是乙個取反嗎,還比較啥 ok,這個時候已經掉到坑里去了,我太小瞧它了!這道題有兩個點 下面我們看看分析 首先,的優先順序大於 所以會先計算 而其實是乙個引用型別,這裡又涉及到了對引用型別轉化為布林值。轉化為布林值為true 然後取反後為false...

分享一下SEO技巧和方法

現在很多朋友對seo的技巧掌握不是很好,而且都會有乙個迷茫期,所謂迷茫期就是說不知道怎麼去優化,由於對技巧的掌握不是很純熟,所以導致進入迷茫期,說句實話,如果有人進入迷茫期的話,最好的辦法就是多做總結多動手操作,只有這樣你的才能自己脫離迷茫期,如果自己實在找不到方法的話,那麼本人建議你可以多看看相關...

分享一下應聘經歷

今天去參加了一次校園招聘,跟大家分享一下我的應聘經歷。早上七點,去公教自習,大部分都寫著考研 佔座,一路走來沒找到乙個合適的位置。後來看到乙個教室是開著的,沒有人,在裡面上自習。八點鐘左右,來了幾個人,帶著大包小包的,邊走邊在討論是不是走錯教室了,後來以小夥子開啟電腦看了一下,大概是核對了一下地點,...