首页 > 解决方案 > 在不同机器上执行相同 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);

            }
        }

标签: c#c++

解决方案


首先,您应该确保您的实时系统真正更快地处理 6 个线程。您可以在两个系统上下载并解压缩 7zip,并使用 6 个线程从命令行运行一个小基准测试:

7z b -mmt6

推荐阅读