예제 #1
0
        private void ScheduleTick(TimeSpan tickTime)
        {
            // keep TickFrequency interval between ticks
            tickTime = tickTime.Max(lastTickTime + TickFrequency);

            if (scheduledTick != null)
            {
                if (scheduledTickTime <= tickTime)
                {
                    // earlier tick is already scheduled
                    return;
                }

                scheduledTick.Dispose();
            }

            scheduledTick = ApplicationHost.Current.TaskScheduler.ScheduleTask((tickTime - Time).Max(TimeSpan.Zero), () => Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Render, () => Tick()));
            scheduledTickTime = tickTime;
        }
예제 #2
0
        public void Benchmark2()
        {
            var sw = new Stopwatch();
            var times = new TimeSpan[10];

            for (var i = 0; i < 10; i++)
            {
                sw.Start();

                var allFriends = this.db.Views.QueryAsync<Person>(new QueryViewRequest("person", "all_friends")).Result;

                var randomPerson = allFriends.Rows.RandomEntry(this.rng).Value;

                var friendsFromRandom = this.RelationsFrom(randomPerson, "Friend").ToList();

                var friendsFromFriendsFromRandom = friendsFromRandom.SelectMany(x => this.RelationsFrom(x, "Friend")).ToList();

                Console.WriteLine("Count results : " + friendsFromFriendsFromRandom.Count);
                times[i] = sw.Elapsed;
                sw.Stop();
                sw.Reset();
            }
            Console.WriteLine("=====================================================================");
            Console.WriteLine("Min time : " + times.Min());
            Console.WriteLine("Max time : " + times.Max());
            Console.WriteLine("Average time : " + TimeSpan.FromTicks((long)times.Average(x => x.Ticks)));
            Console.WriteLine("Median time : " + times.OrderBy(x => x).ElementAt(times.Length / 2));
            Console.WriteLine("=====================================================================");
        }