Пример #1
0
        private static void InsertPerformance(int numPartitions)
        {
            const int insertSize = 1000000;
            int       maxRows    = numPartitions * ushort.MaxValue;

            if (maxRows < insertSize)
            {
                throw new ArgumentOutOfRangeException("need more partitions for this test");
            }

            Table table = new Table("InsertPerf", numPartitions * ushort.MaxValue);

            table.Drop();

            const int limit = 1000000;
            var       seed  = Enumerable.Range(0, limit);

            // Define desired columns
            table.AddColumn(new ColumnDetails("ID", "int", -1, "i", true));
            table.AddColumn(new ColumnDetails("AllOnes", "int", 1, "ao", false));
            table.AddColumn(new ColumnDetails("AllEvens", "short", 0, "even", false));
            table.AddColumn(new ColumnDetails("Tens", "int", 0, "tens", false));
            table.AddColumn(new ColumnDetails("Hundreds", "int", 0, "hundreds", false));
            table.AddColumn(new ColumnDetails("Thousands", "int", 0, "thousands", false));

            DataBlock items = new DataBlock(new string[] { "ID", "AllOnes", "AllEvens", "Tens", "Hundreds", "Thousands" }, limit);

            items.SetColumn(0, seed.ToArray());
            items.SetColumn(1, seed.Select(i => 1).ToArray());
            items.SetColumn(2, seed.Select(i => i % 2).ToArray());
            items.SetColumn(3, seed.Select(i => i / 10).ToArray());
            items.SetColumn(4, seed.Select(i => i / 100).ToArray());
            items.SetColumn(5, seed.Select(i => i / 1000).ToArray());

            Stopwatch timer = Stopwatch.StartNew();

            table.AddOrUpdate(items.AsReadOnly(), new AddOrUpdateOptions());
            timer.Stop();

            Console.WriteLine("Took {0} ms to insert {1} items into {2} partitions", timer.ElapsedMilliseconds, limit, numPartitions);
        }