Click here to Skip to main content
15,896,207 members
Articles / DevOps / Load Testing

Identifying NHibernate-Related Bottlenecks through Performance Monitoring

Rate me:
Please Sign up or sign in to vote.
4.68/5 (14 votes)
10 Jun 2007CPOL9 min read 85.9K   154   88  
A distilled methodology for detecting and isolating NHibernate-related performance and scalability issues
using System.Collections;
using System.Threading;

namespace Sample.Tests
{
    public class SimpleThreadPool
    {
        #region Constructors
        public SimpleThreadPool(ArrayList commands, int threadCount)
        {
            this.commands = commands;
            this.threadCount = threadCount;
        }
        #endregion

        #region Methods
        /// <summary>
        /// 
        /// </summary>
        public void Execute()
        {
            Thread[] pool = new Thread[this.threadCount];
            int commandIndex = 0;
            while (true)
            {
                if (commandIndex == this.commands.Count)
                {
                    break;
                }
                for (int i = 0; i < pool.Length; i++)
                {
                    if (pool[i] != null && pool[i].IsAlive)
                    {
                        continue;
                    }
                    else
                    {
                        ICommand command = (ICommand)this.commands[commandIndex];
                        pool[i] = new Thread(new ThreadStart(command.Execute));
                        pool[i].Start();
                        commandIndex++;
                        break;
                    }
                }
                Thread.Sleep(50 / this.threadCount);
            }
            for (int i = 0; i < pool.Length; i++)
            {
                if (pool[i] != null)
                {
                    pool[i].Join();
                }
            }
        }
        #endregion

        #region Members
        private ArrayList commands;
        private int threadCount;
        #endregion
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
Independent contract developer for .NET data-oriented systems.

not much to say about myself but feel free to contact me for any inquiries and comments!

Comments and Discussions