Esempio n. 1
0
        private void Double_ThreadTest()
        {
            testResult = new UIdelegete(DouThreadtestResultFlash);
            var tdsin = new Thread(Sin_Tdtest);

            tdsin.Start();
            tdsin.Join();
            var dtt = new DouthreadTest();

            dtt.threadtasks[0] = multiThreadTest.Inttest;
            dtt.threadtasks[1] = multiThreadTest.Inttest;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;
            //浮点
            dtt.threadtasks[0] = multiThreadTest.Floattest;
            dtt.threadtasks[1] = multiThreadTest.Floattest;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;
            //rbg插值
            dtt.threadtasks[0] = multiThreadTest.RGBInsert;
            dtt.threadtasks[1] = multiThreadTest.RGBInsert;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;
            //渲染
            dtt.threadtasks[0] = multiThreadTest.renderTest;
            dtt.threadtasks[1] = multiThreadTest.renderTest;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;
            //浮点矩阵
            dtt.threadtasks[0] = multiThreadTest.FloatMax;
            dtt.threadtasks[1] = multiThreadTest.FloatMax;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;

            //整数矩阵
            dtt.threadtasks[0] = multiThreadTest.IntMax;
            dtt.threadtasks[1] = multiThreadTest.IntMax;
            dtt.Start();
            dtt.reset();
            resultRecord.Enqueue(multiThreadTest.esplisedTime / 4);
            multiThreadTest.esplisedTime = 0;
            this.Invoke(testResult);
        }
Esempio n. 2
0
        private void MuityTestbtn_Click(object sender, EventArgs e)
        {
            HTTestbtn.Enabled    = false;
            MuityTestbtn.Enabled = false;
            sTestbtn.Enabled     = false;
            testResult           = new UIdelegete(MulThreadTestResultFlash);
            MuityTestbtn.Text    = "正在测试...";
            timer1.Enabled       = false;
            freqInterval         = 10000;
            var Tdk = new ThreadTask(ProcessCount);

            Tdk.ThreadReady();
            intStack.addAction = resultCal;
            var PCS  = ProcessCount * ProcessCount;
            var ary1 = new int[ProcessCount];

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.renderTest, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.RGBInsert, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.Inttest, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.Floattest, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.IntMax, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;

            for (var i = 0; i < ProcessCount; ++i)
            {
                ary1[i] = Tdk.TaskIn(multiThreadTest.FloatMax, false);
            }
            for (var i = 0; i < ProcessCount; ++i)
            {
                Tdk.TaskStart(ary1[i]);
            }
            resultRecord.Enqueue(multiThreadTest.esplisedTime / (PCS));
            multiThreadTest.esplisedTime = 0;
        }
Esempio n. 3
0
/*------------------------测试----------------------- */

        public void Single_ThreadTest()//单线程主函数
        {
            testResult = new UIdelegete(SinThreadTestResultFlash);
            var freqRecord = new Queue <int>();

            ThreadControl.MyProcessHigh();
            long gg, t1;//时间记录
            int  x1;

            Form1.Turbo();//提高cpu频率
            //栈操作,38mb考验内存和前端总线
            gg = Ctest.Stack_Test();
            resultRecord.Enqueue(gg);
            //树操作,117kb
            gg = Ctest.Btree_Test();
            resultRecord.Enqueue(gg);
            //pi,39kb
            var ary = new int[10000];

            gg  = CSolution.SuperPi(ary, 10000);
            ary = null;
            resultRecord.Enqueue(gg);
            //随机整数
            CSolution.Int_Test(1, out x1);
            resultRecord.Enqueue(x1);
            freqRecord.Enqueue(crtFreq);
            //归并排序+二分查找,38mb
            var ary1 = AryDeal.intBuild(1, 10000000);

            t1 = TickCount.GetTickCount();
            CSolution.Merge_Sort(ary1, ary1.Length);
            for (var i = 0; i < 100000; ++i)
            {
                CSolution.Mid_Search(ary1, ary1.Length, i);
            }
            t1   = TickCount.GetTickCount() - t1;
            ary1 = null;
            resultRecord.Enqueue(t1);
            freqRecord.Enqueue(crtFreq);
            //泰勒多项式
            gg = CSolution.TalorSeries_Test(100);
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //随机浮点
            CSolution.Float_Test(3, out x1);
            resultRecord.Enqueue(x1);
            freqRecord.Enqueue(crtFreq);
            //双向链表,78kb
            gg = Ctest.Twowaychainlist_Test();
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //单向链表,39kb
            gg = Ctest.Onewaychainlist_Test();
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //队列,156kb
            gg = 0;
            for (var i = 0; i < 101; ++i)
            {
                gg += Ctest.Queue_Test();
            }
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //光照渲染器,2-3mb左右
            gg = CSolution.renderTest(1);
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //2d图像缩放,1kb
            gg = CSolution.imageDeal(1, 1);
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //矩阵整数,1mb
            int m = 300, n = 300, p = 300;
            var ary2 = AryDeal.intBuild(0, m * n);
            var ary3 = AryDeal.intBuild(0, n * p);
            var ary4 = new int[m * p];

            gg = 0;
            for (var i = 0; i < 30; i++)
            {
                gg += CSolution.Int_MatrixMulti(ary2, m, n, ary3, p, ary4);
            }
            ary2 = null;
            ary3 = null;
            ary4 = null;
            resultRecord.Enqueue(gg);
            freqRecord.Enqueue(crtFreq);
            //浮点矩阵
            var ary5 = AryDeal.floatBuild(0, m * n);
            var ary6 = AryDeal.floatBuild(0, n * p);
            var ary7 = new double[m * p];

            gg = 0;
            for (var i = 0; i < 30; i++)
            {
                gg += CSolution.Double_MatrixMulti(ary5, m, n, ary6, p, ary7);
            }
            resultRecord.Enqueue(gg);
            ary5 = null;
            ary6 = null;
            ary7 = null;
            freqRecord.Enqueue(crtFreq);
            gg = 0;
            t1 = freqRecord.Count;
            for (var i = 0; i < t1; ++i)
            {
                gg += freqRecord.Dequeue();
            }
            resultRecord.Enqueue(gg / t1);
            this.Invoke(testResult);
        }