我的流程需要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万次?
答案 0 :(得分:1)
如果我们假设您的声明每1毫秒启动一个新任务,并且每个任务将在30毫秒后完成,您可以看到最多将执行30个并发任务。所有任务的执行时间都是
1,000,000 x 1 ms + 30 ms = 1,000,030 ms ~ 16.7 minutes
实际执行代码可能会导致不同的结果,因为每个任务之间可能会有更长的延迟。