poster
2019-12-14, 20:46
我有一个非常奇怪的问题:我已经将一些Matlab代码编译到了程序集中。我使用以下C#行实例化该类:
MatPhiLib temp = new MatPhiLib(); // This line takes 40 seconds to execute. 第一次调用此行时,始终只需要40秒即可执行。随后的呼叫是瞬时的。事情发生了变化,因为我四个月前最后一次查看代码并没有花这么长时间。
专家可以建议一种获得可见性的方法以查看此处发生的情况吗?
更新:
注意,UltraEdit(我的编辑器)也恰好需要40秒才能启动。我认为那里存在一些联系,因为这也从未发生过。
更新:
发现了问题:这是我的新NetGear Stora NAS导致淫秽网络超时的问题。当我拔下电源时,一切都开始像润滑的闪电一样工作。
可能一千头骆驼的跳蚤在负责史诗般的工程设计的驴脑家伙的腋下感染。
回答:
在40秒的等待期的早期,进入正在运行的进程(Debug –Break All)。
打开“ 调用堆栈”窗口(“调试”→“ Windows”→“调用堆栈”)。
如果将MatLib程序集用作外部库而不是解决方案中的项目,请右键单击“ 调用堆栈”窗口,然后在上下文菜单上选择“ 显示外部代码” 。
打开“ 线程”窗口(“调试”→“ Windows”→“线程”)。
逐步处理线程,一个一个地选择它们,然后查看“ 调用堆栈”窗口。您应该能够从前几帧中看到每个线程在做什么—您应该能够看到MatLib代码中引起延迟的位置。 (等待句柄中的线程正在等待其他线程完成工作,或者处于空闲状态,正在等待其他线程创建工作以供它们处理。)
我的猜测是,该库将尝试进行某种形式的网络调用,并且40秒是该调用的超时。您应该能够使用从上述步骤中学到的信息来查找库中的问题。
更多&回答... (https://stackoverflow.com/questions/5486674)
MatPhiLib temp = new MatPhiLib(); // This line takes 40 seconds to execute. 第一次调用此行时,始终只需要40秒即可执行。随后的呼叫是瞬时的。事情发生了变化,因为我四个月前最后一次查看代码并没有花这么长时间。
专家可以建议一种获得可见性的方法以查看此处发生的情况吗?
更新:
注意,UltraEdit(我的编辑器)也恰好需要40秒才能启动。我认为那里存在一些联系,因为这也从未发生过。
更新:
发现了问题:这是我的新NetGear Stora NAS导致淫秽网络超时的问题。当我拔下电源时,一切都开始像润滑的闪电一样工作。
可能一千头骆驼的跳蚤在负责史诗般的工程设计的驴脑家伙的腋下感染。
回答:
在40秒的等待期的早期,进入正在运行的进程(Debug –Break All)。
打开“ 调用堆栈”窗口(“调试”→“ Windows”→“调用堆栈”)。
如果将MatLib程序集用作外部库而不是解决方案中的项目,请右键单击“ 调用堆栈”窗口,然后在上下文菜单上选择“ 显示外部代码” 。
打开“ 线程”窗口(“调试”→“ Windows”→“线程”)。
逐步处理线程,一个一个地选择它们,然后查看“ 调用堆栈”窗口。您应该能够从前几帧中看到每个线程在做什么—您应该能够看到MatLib代码中引起延迟的位置。 (等待句柄中的线程正在等待其他线程完成工作,或者处于空闲状态,正在等待其他线程创建工作以供它们处理。)
我的猜测是,该库将尝试进行某种形式的网络调用,并且40秒是该调用的超时。您应该能够使用从上述步骤中学到的信息来查找库中的问题。
更多&回答... (https://stackoverflow.com/questions/5486674)