FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Listの全件検索をする場合、FindAllとforeachどっちが早いの!? 

    こんにちは。
    涼しい日が続いてますね。
    夏終わりましたかね?

    さて、UnityでListとかを使ってる時に、FindAllを使うことが多々あります。
    「FindAllってはやいの?」
    と疑問がでたので、foreachと比較してみました。

    コードはこちら
    [Blog20210906.cs]

    using System.Collections.Generic;
    using UnityEngine;

    public class Blog20210906 : MonoBehaviour
    {
    List<int> aryInt = new List<int>();

    void Start()
    {
    for (int i = 0; i < 10000000; i++) {
    aryInt.Add(i);
    }
    Calc1();
    Calc2();
    }

    void Calc1() {
    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
    sw.Start();

    List<int> calc = aryInt.FindAll(x => x % 5 == 0);

    sw.Stop();
    Debug.Log("Calc1 : " + sw.ElapsedMilliseconds);
    }

    void Calc2() {
    System.Diagnostics.Stopwatch sw2 = new System.Diagnostics.Stopwatch();
    sw2.Start();

    List<int> calc2 = new List<int>();
    foreach (int i in aryInt) {
    if (i % 5 == 0) {
    calc2.Add(i);
    }
    }

    sw2.Stop();
    Debug.Log("Calc2 : " + sw2.ElapsedMilliseconds);
    }
    }



    こんなことをした結果はこちら。

    Calc1 : 81ms
    Calc2 : 227ms


    foreachよりFindAllのほうが断然早いですね!

    あんまりforeach使ってた方少ないと思いますが、FindAllが早いのが分かりましたね。

    というメモでした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0