ref class in dll
value class in dll
C#环境中运行时间(ms)
594-609
CalRef
calref = new CalRef();
res = calref.GetResult();
484-500
CalValue
calrref = new CalValue();
res = calrref.GetResult();
CalValue calval;
res = calval.GetResult();
C++/CLI环境中运行时间(ms)
594-609
CalRef ^calref = gcnew CalRef;
res = calref->GetResult();
CalRef calrref;
res = calrref.GetResult();
10000
CalValue *calval = new CalValue;
res = calval->GetResult();
484-500
CalValue calval;
res = calval.GetResult();
我使用c++/cli建立了一个dll文件,实验中,分别在C++/cli和C#环境中调用1000000次,考察在不同语言下的调用速度。表中红色数字是建立1000000次类对象的总耗时。下面的代码是建立类对象的代码。
在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类耗时很长。