gpt4 book ai didi

c# - 我应该用 C/C++ 重写我的 DSP 例程,还是我擅长使用 C# 不安全指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:34 24 4
gpt4 key购买 nike

我目前正在编写一个 C# 应用程序,该应用程序执行大量数字信号处理,其中涉及许多小型微调内存 xfer 操作。我使用不安全指针编写了这些例程,它们的性能似乎比我最初想象的要好得多。但是,我希望应用尽可能快。

用 C 或 C++ 重写这些例程是否会带来任何性能优势,还是我应该坚持使用不安全指针?我想知道与 C/C++ 相比,不安全指针在性能方面给表带来了什么。

编辑:我在这些例程中没有做任何特殊的事情,只是普通的 DSP 东西:从一个数组到另一个数组的缓存友好数据传输,其中包含大量乘法、加法、位移位等。我希望 C/C++ 例程看起来与它们的 C# 例程几乎相同(如果不完全相同的话)。

编辑:非常感谢大家提供的所有巧妙答案。我了解到的是,除非进行某种 SSE 优化,否则仅通过直接端口不会显着提高性能。假设所有现代 C/C++ 编译器都可以利用它,我期待着尝试一下。如果有人对结果感兴趣,请告诉我,我会把它们张贴在某个地方。 (虽然可能需要一段时间)。

最佳答案

我实际上已经完全按照您的要求做了,只是在图像处理领域。我从 C# 不安全指针开始,然后转向 C++/CLI,现在我用 C++ 编写所有代码。事实上,从那里我从 C++ 中的指针更改为 SSE 处理器指令,所以我一路走来。还没有达到汇编,虽然我不知道我是否需要,但我在 CodeProject 上看到一篇文章表明 SSE 可以像内联汇编一样快,如果你想要我可以找到它。

我的算法在使用不安全指针的 C# 中从每秒 1.5-2 帧左右增加到现在每秒 40 帧。 C# 和 C++/CLI 肯定比 C++ 慢,即使使用指针,我也无法使用这些语言达到每秒 10 帧以上。一旦我切换到 C++,我立即获得了每秒 15-20 帧的速度。一些更巧妙的更改和 SSE 让我达到每秒 40 帧。所以是的,根据我的经验,如果你想提高速度,那是值得的。有明显的性能提升。

关于c# - 我应该用 C/C++ 重写我的 DSP 例程,还是我擅长使用 C# 不安全指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com