Exemple #1
0
        private static CashAccountRow[] AmountOfMoneyFilter(CashAccountRow[] data)
        {
            Stopwatch sw = new Stopwatch();

            var list = new List <CashAccountRow>();

            unsafe
            {
                fixed(CashAccountRow *dataPtr = data)
                {
                    var             length     = data.Length;
                    CashAccountRow *endPointer = dataPtr + length;

                    sw.Start();
                    for (CashAccountRow *itemPointer = dataPtr; itemPointer <= endPointer; ++itemPointer)
                    {
                        var code = (*itemPointer).AmountOfMoney;
                        if (minValMoney <= code && code <= maxValMoney)
                        {
                            list.Add(*itemPointer);
                        }
                    }

                    sw.Stop();
                    Console.WriteLine("Затрачена на поиск по AmountOfMoney {0}", sw.Elapsed.TotalSeconds);
                }
            }

            return(list.ToArray());

//            return data.Where(row => minVal <= row.Code && row.Code <= maxVal).ToArray();
        }
Exemple #2
0
        private static CashAccountRow[] CodeFilter(CashAccountRow[] data)
        {
            var sw = new Stopwatch();

            var list = new List <CashAccountRow>();

            unsafe
            {
                fixed(CashAccountRow *dataPtr = data)
                {
                    var             length     = data.Length;
                    CashAccountRow *endPointer = dataPtr + length;

                    // note: очень долгий цикл !!!
                    sw.Start();
                    for (CashAccountRow *itemPointer = dataPtr; itemPointer < endPointer; ++itemPointer)
                    {
                        if (minValCode <= (*itemPointer).Code && (*itemPointer).Code <= maxValCode)
                        {
                            list.Add(*itemPointer);
                        }
                    }

                    sw.Stop();
                    Console.WriteLine("Затрачена на поиск по Code {0}", sw.Elapsed.TotalSeconds);
                }
            }

            var cashAccountRows = list.ToArray();

//            Console.WriteLine("Найдено классическим методом {0}", data.Where(row => minValCode <= row.Code && row.Code <= maxValCode).ToArray().Length);
//            Console.WriteLine("Найдено оптимизированным методом {0}", cashAccountRows.Length);
            return(cashAccountRows);

//            return data.Where(row => minVal <= row.Code && row.Code <= maxVal).ToArray();
        }