Windows 在Visual Studio 2013下使用线程进行性能调整

Windows 在Visual Studio 2013下使用线程进行性能调整,windows,multithreading,performance,visual-studio-2013,Windows,Multithreading,Performance,Visual Studio 2013,我在Visual Studio 2013下开发了一个解析日志文件的应用程序。 主解析循环在工作线程中运行。 我运行了VS2013的performance向导(Instrumentation),发现两者(工作线程和UI线程)都占据了将近50%。 为了加快处理速度,我引入了另一个工作线程,根据从解析线程获得的信息更新UI 这提高了每秒处理的行数。但是再次运行性能向导会显示每个线程现在消耗大约33%。 我想知道这是否正确? 我是不是误解了整件事? 你知道我怎样才能加快速度吗? e、 通过从worke

我在Visual Studio 2013下开发了一个解析日志文件的应用程序。 主解析循环在工作线程中运行。
我运行了VS2013的performance向导(Instrumentation),发现两者(工作线程和UI线程)都占据了将近50%。
为了加快处理速度,我引入了另一个工作线程,根据从解析线程获得的信息更新UI

这提高了每秒处理的行数。但是再次运行性能向导会显示每个线程现在消耗大约33%。

我想知道这是否正确?
我是不是误解了整件事?

你知道我怎样才能加快速度吗?
e、 通过从workerthreads更改为普通线程或更改线程优先级

您必须让所有三个线程都燃烧100%的内核才能得到这样的结果。在编写热等待循环时发生,不断检查线程是否已完成。当然不正确。只有当线程在启动工作线程后能够执行其他有用的操作时,才能提高吞吐量。“workerthread”和“普通线程”之间有什么区别?对我来说,两者都是线程,区别在于它们的使用方式。在任何情况下,您都可能做了一些错误的事情:如果您的UI线程占用了整个使用的处理能力的三分之一,那么这是错误的。我猜你会在每一个微小的改变上更新UI,这是错误的。它会浪费重新绘制的性能,并导致锁争用。但是,如果对您的程序了解得不多,就很难说了,因此我支持投票结束这个问题,认为这是离题的。@UlrichEckhardt我认为这两种线程类型在它们的池中是不同的。据我所知,您不能更改workerthread上的优先级,而可以更改普通线程上的优先级。但我可能错了。