如何计算一些异步进程?

时间:2014-10-06 11:01:32

标签: c# process

我的流程需要30毫秒。我要发射一百万次。我每1ms开一个过程。完成所有流程需要多少ms

更新

我有一个带有此代码的Windows窗体:

public partial class Form1 : Form
{
    private AsyncTimer timer;
    private List<int> grades = new List<int>();
    public Form1()
    {
        timer = new AsyncTimer();
        timer.OnTimerTick += new AsyncTimer.TimerCallbackDel(Syncer);
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Stopwatch watch = new Stopwatch();
        watch.Start();
        timer.StartTimer("1");
        watch.Stop();
        string processTime = watch.Elapsed.Milliseconds.ToString();
    }
    private void Syncer()
    {
        grades.Add(DoTast());
    }
    public static int DoTast()
    {
        byte[] source = File.ReadAllBytes(@"C:\Users\Public\Music\Sample Music\Kalimba.mp3");
        byte[] input = File.ReadAllBytes(@"C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3");
        int i = 0;
        int grade = 0;
        for (i = 0; i < input.Length; i++)
        {
            if (source[i] == input[i])
            {
                grade++;
            }
        }
        return grade;
    }
}

这是AsyncTimer类:

class AsyncTimer
{
    private Timer timer1;
    public delegate void TimerCallbackDel();
    public event TimerCallbackDel OnTimerTick;
    private void TimerCallback(object state)
    {
        if (OnTimerTick != null)
        OnTimerTick();
    }
    public void StartTimer(string interval)
    {
        timer1 = new Timer(TimerCallback, null, 0, Int32.Parse(interval) * 1);
    }
}

每1ms我开始一项新任务,比较两个阵列,需要30ms才能完成。现在需要多长时间才能发射100万次?

1 个答案:

答案 0 :(得分:1)

如果我们假设您的声明每1毫秒启动一个新任务,并且每个任务将在30毫秒后完成,您可以看到最多将执行30个并发任务。所有任务的执行时间都是

1,000,000 x 1 ms + 30 ms = 1,000,030 ms ~ 16.7 minutes

实际执行代码可能会导致不同的结果,因为每个任务之间可能会有更长的延迟。