c# - 在不同机器上执行相同 API 的时间差异
问题描述
我在 C# 中的应用程序 WPF 使用 C++ 库中的 API 进行图像处理。我需要一次处理六个图像,因为这六个对象可用于此。当图像准备好进行处理时,它将被分配给线程池中的线程。下面的代码用于此。
ThreadPool.QueueUserWorkItem(ThreadPoolCallback, imageTuple);
在“ThreadPoolCallback”中调用图像处理 API。
谈到我的问题,在我的开发笔记本电脑中,执行 API 的时间是 3 - 3.5 秒。但是,当在具有更好规范的 IPC 的自动化系统中执行相同的代码时,API 执行时间为 8 - 9 秒。
我的开发机器有 8 核处理器和 16 GB 内存 IPC 在自动化系统中有 14 核处理器和 32 GB 内存。
我已经检查了基本的事情,比如内存激增,cpu 利用率很高。但他们都没有表现出任何值得担心的事情。两个系统的唯一区别是 IPC 安装了 NI Labview 设置。
寻找一些建议来改善我的并行执行时间。我是否可以使用专用内核或任何其他内核。
提前致谢
ThreadPool.QueueUserWorkItem(ThreadPoolCallback, imageTuple);
public void ThreadPoolCallback(Object threadContext)
{
try
{
var result = visionProcessingUnit.ExecuteInspection(imageTuple.Item3, imageTuple.Item2.ImageData, VIBitmap.Width, VIBitmap.Height);;
}
catch (Exception ex)
{
Logger.Exception("VisionHandler.cs", ex);
}
}
解决方案
首先,您应该确保您的实时系统真正更快地处理 6 个线程。您可以在两个系统上下载并解压缩 7zip,并使用 6 个线程从命令行运行一个小基准测试:
7z b -mmt6
推荐阅读
- cordova - 如何在cordova-plugin-kunder-accountmanager插件中使用cordova中的帐户管理方法?
- c# - 通过 ASP.NET MVC 发布非常复杂的数据结构
- octave - Octave 中的整数除法
- javascript - 分别处理同一实例的多个异常
- ios - Flutter WillPopScope 在IOS中禁用向左滑动返回
- android - Andriod Build问题无法解析XML
- excel - 循环浏览在一台 PC 而不是另一台 PC 上工作的所有图表
- c# - Syncfusion Blazor:网格列中的绑定下拉列表
- python - 用 Python 做主谋
- python - 如何根据特征工具中的客户人口统计数据计算 DIFF?