【问题标题】:Using C++ dll functions to improve performance in C# project在 C# 项目中使用 C++ dll 函数提高性能
【发布时间】:2012-09-24 10:04:48
【问题描述】:

多年来一直听说 C++ 速度很快,因此,举例来说,它对图像处理很有好处。

如果我正在用 C# 开发一个需要进行一些图像处理的系统,并且我想提高你的性能,那么最好的方法是什么?

1 - 全部在 C# 中完成,并执行“非托管”所包含的图像处理功能

2 - 用 C++ 编写处理图像的函数并将该函数导入我的 C# 代码?

还有其他问题吗?

哪一项提高了性能?

【问题讨论】:

  • 哦,要是优化这么简单就好了……对于初学者来说,我们可以(而且我们中的许多人都会)用每一种语言编写效率极低的代码。
  • 这对于 Stack Overflow 来说相当宽泛,这里有很多讨论空间。你能把它缩小到一个客观地可以回答的问题吗?否则它可能会关闭。
  • 好吧,Tim Post,我编辑了我的问题,我认为这是一般性的,但我不知道另一种最好的方式来问这个问题。
  • 性能的问题是很难准确预测瓶颈会是什么,尝试优化任何不是瓶颈的东西通常是浪费时间(或者更糟糕的是,会引入错误,维护问题等)。先用最自然的方式写,看看够不够快;如果不是,则分析,找到瓶颈,尝试优化,再次分析.. 冲洗并重复,直到性能“足够好”。

标签: c# c++ performance image-processing dllimport


【解决方案1】:

这是在 C++ 到 C# 调用和 IL 代码到机器代码生成之间的权衡。

  1. C# 生成 IL 代码,该代码将在运行时转换为机器代码。机器代码生成会产生一些成本。
  2. 从 C#,您可以调用 C++ DLL 的方法。加载 C++ 方法并调用它会产生一些成本。

现在您需要比较 1 和 2 的成本。

【讨论】:

    【解决方案2】:

    我不知道你需要做什么样的图像处理操作,但如果你想获得很好的性能,你可以考虑使用CUDA或OpenCL(在显卡上编程)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多