Example #1
0
        public void SortUsers()
        {
            if (currentlySorting)
            {
                return;
            }
            currentlySorting = true;
            var watch = Stopwatch.StartNew();

            SortedUsers.Clear();
            var ops    = new List <string>();
            var voiced = new List <string>();
            var users  = new List <string>();

            foreach (var user in Users)
            {
                if (user.Prefix.StartsWith("@"))
                {
                    ops.Add("@" + user.Nick);
                }
                else if (user.Prefix.StartsWith("+"))
                {
                    voiced.Add("+" + user.Nick);
                }
                else
                {
                    users.Add(user.Nick);
                }
            }

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            Debug.WriteLine("Elapsed time to sort: " + elapsedMs + "ms");
            watch.Start();

            ops.Sort();
            voiced.Sort();
            users.Sort();

            ops.ForEach(SortedUsers.Add);
            voiced.ForEach(SortedUsers.Add);
            users.ForEach(SortedUsers.Add);

            watch.Stop();
            var elapsedMsOrder = watch.ElapsedMilliseconds;

            Debug.WriteLine("Elapsed time to order: " + elapsedMsOrder + "ms");

            Debug.WriteLine("Total time: " + (elapsedMsOrder + elapsedMs) + "ms");
            currentlySorting = false;
        }
Example #2
0
 public void ClearUsers()
 {
     Users.Clear();
     SortedUsers.Clear();
 }