首页 新闻 会员 周边 捐助

启动调试与开始执行(不调试)比较中一个奇怪的现象 ——线程的问题

0
悬赏园豆:50 [待解决问题]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       private Thread invokeThread;
        private delegate void invokeDelegate();

        private void StartMethod()
        {
        }
        private void button3_Click_1(object sender, EventArgs e)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            invokeThread = new Thread(new ThreadStart(StartMethod));
            invokeThread.Start();
            sw.Stop();
            label1.Text = (sw.ElapsedTicks / (decimal)Stopwatch.Frequency).ToString();

        }
    }
}

换用 ThreadPool.QueueUserWorkItem创建的话,执行时间不稳定平均表现依然不及调试状态下的执行速度。


这是测试代码,大家可以去试试。
在我i73612cpu上面,速度相差整整一个数量级。

 

 

第一个是调试状态下的时间,第二个图是不调试状态下的时间

 

估计是由于线程池的原因。

 

如何才能达到调试状态下的速度呢?

天天上网的主页 天天上网 | 初学一级 | 园豆:154
提问于:2012-12-24 22:18
< >
分享
所有回答(1)
0

一般是调试状态比较慢,发布后速度快。

lz编译一个relase版本的dll出来,放到程序里面试试

卒子 | 园豆:588 (小虾三级) | 2013-01-05 15:24

为什么要做成dll呢,难道这样速度就会提高?

支持(0) 反对(0) 天天上网 | 园豆:154 (初学一级) | 2013-01-05 15:36

relase版本和debug版本速度差不多,估计是里面没有什么内容。

 

为什么在调试状态下快?

支持(0) 反对(0) 天天上网 | 园豆:154 (初学一级) | 2013-01-05 15:41

@天天上网: 你的非调试状态是什么状态,程序怎么运行起来的 ?  

编译成dll可以脱离vs,运行结果比较可靠

支持(0) 反对(0) 卒子 | 园豆:588 (小虾三级) | 2013-01-05 16:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册