我正在尝试对我的算法进行基准测试。有时它需要超长的时间,我想知道它到达了哪里。但是对于某些原因,Debug.log在更新方法结束之前不会打印任何内容。
我希望看到它逐步打印文本,而是在更新周期结束时立即获取所有内容。 Makediagram方法很慢。根据输入可能需要7-700秒。
private void Update()
{
if (i > 0) return;
int count = 16 * (int)Mathf.Pow(2, i);
Debug.Log("New diagram");
BowyerWatson bw = new BowyerWatson(BowyerWatson.STATE.STATE_3D, count, 0);
Debug.Log("Points generated");
float ctime = Time.realtimeSinceStartup;
bw.MakeDiagram();
time += Time.realtimeSinceStartup - ctime;
Debug.Log("i:" + i + " j:" + j + " time:" + (Time.realtimeSinceStartup-ctime));
j++;
if(j == 20)
{
i++;
j = 0;
Debug.Log(count + " points took: " + time / 20 + "s on average");
time = 0;
}
}
答案 0 :(得分:0)
Debug.Log立即写入。问题是Update不会产生并等待一个任务结束。你真正想要的是一个在MakeDiagram()运行时产生的协程。
或者在MakeDiagram()运行时将布尔值标记为true,然后在Update()函数中,如果布尔值为true,则为return
,然后在MakeDiagram()完成后将bool标记为false ,继续执行代码。