使用C+会出现性能问题吗+;在C#内? 我有一个C++程序,它对40K的记录进行文本处理。我们开发了这个C++程序,因为我们认为它会更快。然后我使用进程执行在C++程序中使用/执行这个C++部分,但问题是我们感觉失去了对执行流的控制:不能调试C++部分。我想在C++程序中集成更多的C++。我搜索了Google,发现我必须为我的C++生成一个DLL,然后我可以在我的C语言程序中使用它。
问题: <> LI>这会减慢C++部分的执行速度吗? <> LI>还有其他更好的方法来将C++部分集成到我的C语言程序中吗?使用C+会出现性能问题吗+;在C#内? 我有一个C++程序,它对40K的记录进行文本处理。我们开发了这个C++程序,因为我们认为它会更快。然后我使用进程执行在C++程序中使用/执行这个C++部分,但问题是我们感觉失去了对执行流的控制:不能调试C++部分。我想在C++程序中集成更多的C++。我搜索了Google,发现我必须为我的C++生成一个DLL,然后我可以在我的C语言程序中使用它。,c#,c++,performance,C#,C++,Performance,问题: LI>这会减慢C++部分的执行速度吗? LI>还有其他更好的方法来将C++部分集成到我的C语言程序中吗? DLL内部包装C++代码不会以任何方式降低它。 是的,与在可执行文件中调用函数不同,在DLL中调用函数会有(轻微的)性能损失-例如,编译器不能内联调用。但这通常是完全可以忽略不计的开销(3-5条CPU指令) 这可能是最简单的方法 DLL内部的C++代码不会以任何方式降低它。 是的,与在可执行文件中调用函数不同,在DLL中调用函数会有(轻微的)性能损失-例如,编译器不能内联调用
DLL内部包装C++代码不会以任何方式降低它。
是的,与在可执行文件中调用函数不同,在DLL中调用函数会有(轻微的)性能损失-例如,编译器不能内联调用。但这通常是完全可以忽略不计的开销(3-5条CPU指令)这可能是最简单的方法 <包装> DLL内部的C++代码不会以任何方式降低它。 是的,与在可执行文件中调用函数不同,在DLL中调用函数会有(轻微的)性能损失-例如,编译器不能内联调用。但这通常是完全可以忽略不计的开销(3-5条CPU指令)
这可能是最简单的方法 如果不进行测量,你就无法判断这是否足够快以实现你的目标。尽可能简单地(在DLL中包上现有的C++代码),看看它是否符合你的性能目标。我猜可能会的
从托管中调用本机代码在每次方法调用中都会有一些开销-如果您的程序受到严重的计算限制,并且将在每个记录中多次调用本机方法,那么您可能会看到由于互操作而导致的速度减慢。如果您的代码只调用一次本机代码以批量处理所有40k记录,那么执行互操作的成本将大大低于处理记录所花费的实际时间。如果记录来自速度较慢的存储介质(如通过网络),则与I/O时间相比,您的处理时间可能微不足道。如果不进行测量,您无法判断这是否足够快以满足您的目标。尽可能简单地(在DLL中包上现有的C++代码),看看它是否符合你的性能目标。我猜可能会的
从托管中调用本机代码在每次方法调用中都会有一些开销-如果您的程序受到严重的计算限制,并且将在每个记录中多次调用本机方法,那么您可能会看到由于互操作而导致的速度减慢。如果您的代码只调用一次本机代码以批量处理所有40k记录,那么执行互操作的成本将大大低于处理记录所花费的实际时间。如果记录来自较慢的存储介质(如通过网络),则与I/O时间相比,您的处理时间可能可以忽略不计。您可以在此处选择:
extern "C" __declspec(dllexport) int DoProcessing(int);
接下来,在托管代码中导入函数:
class Program
{
[DllImport("mylibrary.dll")]
static extern int DoProcessing(int input);
static void Main()
{
int result = DoProcessing(123);
}
}
如果处理的输入和输出不是很复杂,并且可以很容易地封送,那么这种方法是有效的。它的开销很小您在这里有几个选项:
extern "C" __declspec(dllexport) int DoProcessing(int);
接下来,在托管代码中导入函数:
class Program
{
[DllImport("mylibrary.dll")]
static extern int DoProcessing(int input);
static void Main()
{
int result = DoProcessing(123);
}
}
如果处理的输入和输出不是很复杂,并且可以很容易地封送,那么这种方法是有效的。它的开销很小另一种方法是将C应用程序编译成dll并在进程中加载。这仍然会有一些开销,但它比生成一个额外的进程要小得多我同意AdamRalph的观点-我认为在CPP中编写这段代码只会带来集成方面的痛苦
顺便说一句,CPP代码是否管理?如果是这样的话,你为什么不把它链接到你的C代码中,避免所有的互操作开销呢?我同意AdamRalph的观点,我认为用CPP编写这段代码只会带来集成方面的痛苦 顺便说一句,CPP代码是否管理?如果是这样的话,你为什么不把它链接到你的C代码中,避免所有的互操作开销呢你能格式化你的帖子吗?你有没有试过