Example #1
0
 private bool CompareMiniDict <T>(MiniDict <Flags, T> md, Dictionary <Flags, T> nd)
 {
     foreach (var pair in nd)
     {
         if (!pair.Value.Equals(nd[pair.Key]))
         {
             return(false);
         }
     }
     return(true);
 }
Example #2
0
    public ArchetypePool(Flags *flags, int[] sizes)
    {
        var allFlags = Flags.Join(flags, sizes.Length);

        archetypeFlags_   = allFlags;
        componentBuffers_ = new MiniDict <Flags, UntypedBuffer>(flags, sizes.Length);

        for (int i = 0; i < sizes.Length; i++)
        {
            componentBuffers_[flags[i]] = new UntypedBuffer(sizes[i], 4);//todo change starting size
        }
        Count = 0;
    }
Example #3
0
        public void Test()
        {
            const int qty  = 20;
            var       keys = new Flags[qty];

            for (int i = 0; i < qty; i++)
            {
                keys[i] = new Flags(i);
            }

            var mDict  = new MiniDict <Flags, int>(keys);
            var mDict2 = new MiniDict <Flags, int>(keys, Enumerable.Range(0, 20).ToArray());
            var nDict  = new Dictionary <Flags, int>(qty);

            for (int i = 0; i < qty; i++)
            {
                mDict[new Flags(i)] = i;
            }
            for (int i = 0; i < qty; i++)
            {
                nDict[new Flags(i)] = i;
            }

            Assert.True(CompareMiniDict(mDict, nDict));
            Assert.True(CompareMiniDict(mDict2, nDict));

            for (int i = 0; i < qty; i++)
            {
                mDict[new Flags(i)]++;
            }
            for (int i = 0; i < qty; i++)
            {
                mDict2[new Flags(i)]++;
            }
            for (int i = 0; i < qty; i++)
            {
                nDict[new Flags(i)]++;
            }

            Assert.True(CompareMiniDict(mDict, nDict));
            Assert.True(CompareMiniDict(mDict2, nDict));
        }
Example #4
0
    private static void StressMiniDict()
    {
        const int V    = 20;
        var       keys = new Flags[V];

        for (int i = 0; i < V; i++)
        {
            keys[i] = new Flags(i);
        }
        var mDict = new MiniDict <Flags, int>(keys);

        var nDict = new Dictionary <Flags, int>(V);


        for (int i = 0; i < V; i++)
        {
            mDict[new Flags(i)] = i;
        }

        for (int i = 0; i < V; i++)
        {
            nDict[new Flags(i)] = i;
        }

        var       sw = Stopwatch.StartNew();
        const int V1 = 0xfffff;

        for (int i1 = 0; i1 < V1; i1++)
        {
            for (int i = 0; i < V; i++)
            {
                mDict[new Flags(i)]++;
            }
        }

        Console.WriteLine("m " + sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i1 = 0; i1 < V1; i1++)
        {
            for (int i = 0; i < V; i++)
            {
                nDict[new Flags(i)]++;
            }
        }

        Console.WriteLine(sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i1 = 0; i1 < V1; i1++)
        {
            for (int i = 0; i < V; i++)
            {
                mDict[new Flags(i)]++;
            }
        }

        Console.WriteLine("m " + sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i1 = 0; i1 < V1; i1++)
        {
            for (int i = 0; i < V; i++)
            {
                nDict[new Flags(i)]++;
            }
        }

        Console.WriteLine(sw.ElapsedMilliseconds);

        Console.ReadKey();
    }