国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

for 循環性能比較 提高for循環的效率

2019-11-21 01:26:46
字體:
來源:轉載
供稿:網友
for(int i=1,n=tempUser.length;i <n;i++)與
for(int i=1,;i <tempUser.length;i++)相比較,性能有較大的區別嗎,有必要采取這種寫法嗎,
習慣for(int i=1,;i <tempUser.length;i++),而且并沒有發現兩者的性能有較大差別,
我當即就測試了一下,發現果然性能比較起來差別很小,甚至后者更高效一點。
雖然得出這樣的結果,但和自己心里想的確完全相反的。所有當然就回復說差不多。
今天又發現一位前輩的blog中正好有對這個帖子的回應。他做了測試,內容大致是前面的帖子的問題應該是差不多的,但是他又更深入的進行測試,得出:在有情況for(int i=0;i<a.b.c.length;i++)的情況的時候,使用for(int i=0,n=a.b.c.length;i<n;i++)更加高效。
所有我也做了一下測試:
復制代碼 代碼如下:

class Program {
static void Main(string[] args) {
string s;
s = Console.ReadLine();

while(s != "0") {
Person p = new Person(10000000);

Console.WriteLine("for(int i=0;i<lenArray.length;i++)");
Console.WriteLine("Starting...");
long l1 = DateTime.Now.Ticks;

for(int i = 0; i < p.Child.Alias.Length; i++) {
//Console.Write(lenArray[i]);

}
long l2 = DateTime.Now.Ticks;

Console.WriteLine("Ending./nTime is : " + (l2 - l1).ToString());

Console.WriteLine("for(int i=0,n=lenArray.length;i<n;i++)");
Console.WriteLine("Starting...");

long l3 = DateTime.Now.Ticks;
for(int i = 0, n = p.Child.Alias.Length; i < n; i++) {
//Console.Write(lenArray[i]);

}
long l4 = DateTime.Now.Ticks;
Console.WriteLine("Ending./nTime is : " + (l4 - l3).ToString());
s = Console.ReadLine();
}
Console.Read();
}
}


其中數據量越大,類越大,差別越明顯。

結論:影響應該在,變量在每次循環都要訪問下一級變量的原因。如果只是簡單的a.length可能編譯器對這樣的循環操作有優化,將a.length保存到了內存或一個比內存更塊的地方,而多級就沒有這么幸運了。
我們都知道for(int i=0;i<a.length;i++)語句,i=0是運行一次,而i<a.length和i++是每次循環都要做的工作。所有應該盡量將訪問變量耗時間的操作放在第一個;號前。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴桥县| 西和县| 赤城县| 赤峰市| 琼中| 土默特左旗| 尼玛县| 辽阳县| 拉孜县| 武夷山市| 乌海市| 涿鹿县| 苗栗市| 江山市| 盘锦市| 新郑市| 荥阳市| 玉溪市| 梅河口市| 黄龙县| 舟山市| 崇仁县| 甘德县| 汾西县| 莱西市| 疏勒县| 垫江县| 壶关县| 麦盖提县| 临武县| 无极县| 晋州市| 武平县| 海宁市| 资阳市| 惠安县| 乌什县| 安泽县| 曲阜市| 阿图什市| 涞水县|