ウェブサイトは同様に1000回のアクセスプログラムのテストですが、100個のスレッド、各スレッドの100回の循環に分けてプログラムの大きな同時圧力をテストするのはもっと頼りになります.

4922 ワード

for (int i = 0; i < 1000; i++)            {                GetUserRoleNames(i.ToString());            }
このような単一プロセステストでは、一般的に問題を発見することは容易ではありません.これも1000回のアクセスですが、これは1つの次のアクセスであり、複数のユーザーが同時に関数を呼び出す大きな同時発生を実際に反映することはできません.マルチスレッドのプログラムを書いてシミュレーションする必要があります.マルチユーザーが同時にメソッドにアクセスする同時効率のパフォーマンスがより適切です.
以下に、同時実行時の実行効果の参照コードを示します.
        /// <summary>
        ///  
        /// </summary>
        /// <param name="userId"> </param>
        /// <returns> </returns>
        protected string GetUserRoleNames(string userId)
        {
            string roleName = string.Empty;
            UserService userService = new UserService();
            var entityList = userService.GetUserRoleList(BaseSystemInfo.UserInfo, userId);
            var list = entityList.Where(entity => entity.Enabled == 1 && entity.IsVisible == 1).OrderBy(entity => entity.SortCode);
            foreach (var role in list)
            {
                roleName += "(" + role.RealName + ") ";
            }
            System.Console.Write("i:" + userId.ToString() + ", ");
            return roleName;
        }

        private void GetUserRoleName()
        {
            for (int i = 0; i < 100; i++)
            {
                GetUserRoleNames(i.ToString());
            }
        }

        private void btnCreateUser_Click(object sender, EventArgs e)
        {
            //  
            this.btnCreateUser.Enabled = false;

            for (int i = 0; i < 50; i++)
            {
                //  
                Thread thread = new Thread(new ThreadStart(GetUserRoleName));
                thread.Start();
            }

            this.btnCreateUser.Enabled = true;
        }