C++/CLI C#调用dll速度比较和内存分配时间测试
2007-03-02 14:03
591 查看
[align=center] [/align] | [align=center]ref class in dll[/align] | [align=center]value class in dll[/align] |
[align=center]C#环境中运行时间(ms)[/align] | [align=center]594-609[/align] [align=left]CalRef calref = new CalRef();[/align] [align=left]res = calref.GetResult();[/align] [align=center] [/align] | [align=center]484-500[/align] [align=left]CalValue calrref = new CalValue();[/align] [align=left]res = calrref.GetResult();[/align] [align=center] [/align] [align=left] CalValue calval;[/align] [align=left] res = calval.GetResult();[/align] [align=center] [/align] |
[align=center]C++/CLI环境中运行时间(ms)[/align] | [align=center]594-609[/align] [align=left]CalRef ^calref = gcnew CalRef;[/align] [align=left]res = calref->GetResult();[/align] [align=left] [/align] [align=left] CalRef calrref;[/align] [align=left] res = calrref.GetResult();[/align] [align=left] [/align] [align=center] [/align] | [align=center] [/align] [align=center]10000[/align] [align=left]CalValue *calval = new CalValue;[/align] [align=left]res = calval->GetResult();[/align] [align=center] [/align] [align=center]484-500[/align] [align=left] CalValue calval;[/align] [align=left] res = calval.GetResult();[/align] [align=center] [/align] |
在C++/CLI中,调用ref class类一共耗时594-610ms, 在栈中建立value class类一共耗时484-500ms,但是在堆中建立value class类一共耗时10000ms
在C#中,调用ref class类一共耗时609ms,在栈或堆中建立value class类一共耗时484-500ms
可以看出,生成dll文件后,不同语言的调用速度基本一致,但是在C++/CLI中,在堆上建立value class类耗时很长。
相关文章推荐
- C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏
- C#/C++/CLI运行效率测试之二: Native C++调用Native C++ DLL
- C#调用的C++动态库里到底能分配多大的内存(实验)
- C#如何利用Stopwatch比较精确的测试算法运算时间
- 卷积神经网络的训练和测试(针对电脑内存比较小的,运行速度比较慢的)
- 一个Win32 C++ 动态连接库的模板 --- 调用方可管理DLL分配的内存
- 一个Win32 C++ 动态连接库的模板 — 调用方可管理DLL分配的内存
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。
- C++几种内存分配方法的效率测试与比较
- C# 调用GDAL编写的动态链接库dll,后不能将生成的图像显示到picturebox上,显示内存不足
- 一个Win32 C++ 动态连接库的模板 --- 调用方可管理DLL分配的内存
- 如何在Dll中分配内存,而在调用程序里释放
- C# 调用C++ DLL 尝试读取或写入受保护的内存
- (原创)VB调用DLL(VC)使用结构体参数时的内存对齐及分配的问题.
- 字段内存C#调用C++DLL注意事项
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)
- 【matlab】预分配内存提高运行效率以及时间比较
- 使用C#制作简单dll文件,并测试调用
- 关于C#调用VC编的DLL后报“System.AccessViolationException:尝试读取或写入受保护的内存
- C#/C++/CLI运行效率测试之一: C#通过CLR/C++调用Native CPP 类