欧美一乱一性一交一视频_久久久99久久_另类天堂视频在线观看_免费观看久久av_欧美黑人xxxxx_国产精品久久久久一区二区三区_男男激情在线_亚洲视频在线免费观看_国产精品二区二区三区_在线观看麻豆视频_91小视频在线免费看_国产综合18久久久久久

南京軟件定制開發

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導航

企業定制軟件之C#與C++混合編程及性能分析

發布時間:Mar 01, 2022         已有 人瀏覽
C#C++混合編程及性能分析
概要:
眾所周知, ?
C#做界??C++開發效率要?得多, 但在有性能問題的情況下不得不將部分模塊使?C++, 這時就需要使?C#C++混合
編程。 本?給出了兩種混合編程的?法以及性能對?。
開發環境:

ThinkPad T430 i5-3230M 2.6G 8GWin7 64BitVS2013C++開發設置) , C++C#都采?x64平臺, 性能驗證使?Release版本。
測試純
C++項?性能:
1. 新建空解決?案: ?件|新建|項?|已安裝|模板|其他項?類型|Visual Studio解決?案|空?解決?案
2. 新建PureCpp項?: 右擊解決?案|添加|新建項?|已安裝|Visual C++|Win32控制臺程序, 按缺省設置?成項?
3. 在配置管理器中新建x64平臺, 刪除其他平臺
4. 新建CppFunction, 并添加測試代碼, 完整代碼如下, 程序結果: Result: 1733793664 Elapsed: 109
// CppFunction.h
#pragma once
class CppFunction
{
p
ublic
:
CppFunction(){}
~CppFunction(){}

int TestFunc(int a, int b);
};

// CppFunction.cpp
#include "stdafx.h"
#include "CppFunction.h"
class CCalc
{
p
ublic
:
CCalc(
int a, int b)
{
m_a = a;
m_b = b;
}
i
nt
Calc()
{

if (m_a % 2 == 0){
return m_a + m_b;
}
if
(m_b % 2 == 0){
return m_a - m_b;
}
r
eturn
m_b - m_a;
}

private:
int m_a;
int m_b;
};

int CppFunction::TestFunc(int a, int b)
{
CCalc calc(a, b);

return calc.Calc();
}
/
/ PureCpp.cpp :
定義控制臺應?程序的??點。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include
"CppFunction.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
DWORD start = ::GetTickCount();
CppFunction cppFunction;

int result = 0;
for (int i = 0; i < 10000; i++){
for (int j = 0; j < 10000; j++){
result += cppFunction.TestFunc(i, j);
}
}D
WORD end = ::GetTickCount();
cout <<
"Result: " << result << " Elapsed: " << end - start << endl;
return 0;
}
V
iew Code

測試純Csharp項?性能:
1. 新建PureCsharp項?: 右擊解決?案|添加|新建項?|已安裝|其他語?|Visual C#|控制臺應?程序, 按缺省設置?成項?
2. 在配置管理器中新建x64平臺, 刪除其他平臺, 去掉【創建新的解決?案平臺】 勾選, 否則會報x64平臺已經存在
3. C++項?中的代碼復制過來稍作改動, 完整代碼如下, 程序結果: Result: 1733793664 Elapsed: 729
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PureCsharp
{

class CCalc
{

public CCalc(int a, int b)
{
m_a = a;
m_b = b;
}
p
ublic int
Calc()
{

if (m_a % 2 == 0)
{

return m_a + m_b;
}
if
(m_b % 2 == 0)
{

return m_a - m_b;
}
r
eturn
m_b - m_a;
}
p
rivate int
m_a;
private int m_b;
}
c
lass
CppFunction
{

public int TestFunc(int a, int b)
{
CCalc calc =
new CCalc(a, b);
return calc.Calc();
}
}
c
lass
Program
{

static void Main(string[] args)
{
DateTime start = System.DateTime.Now;
CppFunction cppFunction =
new CppFunction();
int result = 0;
for (int i = 0; i < 10000; i++){
for (int j = 0; j < 10000; j++){
result += cppFunction.TestFunc(i, j);
}
}D
ateTime end = System.DateTime.Now;

System.Console.WriteLine("Result: " + result + " Elapsed: " + (end - start).Milliseconds);
}
}
}
V
iew Code

性能分析:
從上?的對?可以看出, 同樣的功能,
C#的耗時?乎是C++7倍, 這個例??的主要原因是, C++可以使??效的棧內存對象
CCalc) , ?C#所有對象只能放在托管堆中。
托管
C++混合?式:
1. 新建C#控制臺項?, 命名為BenchCsharp, 使?它來調?C++項?, 修改?成?錄為: ..\x64\Release\
2.
新建C++DLL項?, 命名為DLLCpp, 選擇空項?, ?成成功, 但由于是空項?, 不會真正?成dll?件
3. DLLCpp為空項?時, 在BenchCsharp中可以成功添加引?, 但當DLLCpp中添加類后, 就不能成功添加引?了, 已經添加的引?
也會顯?警告

4. 修改DLLCpp項?屬性, 右擊項?|屬性|配置屬性|常規|公共語?運?時?持, 修改后就可以成功引?了
5. DLLCpp中添加CppFunction類, 并復制代碼, 完整代碼如下, 程序結果: Result: 1733793664 Elapsed: 405
// CppFunction.h
#pragma once
public ref class CppFunction
{
p
ublic
:
CppFunction(){}
~CppFunction(){}

int TestFunc(int a, int b);
};

// CppFunction.cpp
#include "CppFunction.h"
class CCalc
{
p
ublic
:
CCalc(
int a, int b)
{
m_a = a;
m_b = b;
}
i
nt
Calc()
{

if (m_a % 2 == 0){
return m_a + m_b;
}
if
(m_b % 2 == 0){
return m_a - m_b;
}
r
eturn
m_b - m_a;
}

private:
int m_a;
int m_b;
};

int CppFunction::TestFunc(int a, int b)
{
CCalc calc(a, b);

return calc.Calc();
}
V
iew Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BenchCsharp
{

class Program
{

static void Main(string[] args)
{
DateTime start = System.DateTime.Now;
CppFunction cppFunction =
new CppFunction();
int result = 0;
for (int i = 0; i < 10000; i++)
{

for (int j = 0; j < 10000; j++)
{
result += cppFunction.TestFunc(i, j);
}
}D
ateTime end = System.DateTime.Now;
System.Console.WriteLine(
"Result: " + result + " Elapsed: " + (end - start).Milliseconds);
}
}
}
V
iew Code

性能分析:
使?混合編程后, 性能得到了?定程度的提升, 但?起單純的
C++項?, 還是差了很多
C#主函數中的邏輯轉移到DLLCpp項?中, 即添加如下的static?法, C#中只要調?該?法, 程序結果: Result: 1733793664
Elapsed: 405

int CppFunction::Test()
{
DWORD start = ::GetTickCount();
CppFunction cppFunction;

int result = 0;
for (int i = 0; i < 10000; i++){
for (int j = 0; j < 10000; j++){
result += cppFunction.TestFunc(i, j);
}
}D
WORD end = ::GetTickCount();
cout <<
"Result: " << result << " Elapsed: " << end - start << endl;
return result;
}
V
iew Code

并沒有變得更快, 估計是當使?【公共語?運?時?持】 ?式編譯C++時, 不能發揮C++的性能優勢
DLLImport混合?式:
1. 新建?空的C++DLL項?, 命名為NativeDLLCpp
2.
CppFunction類從PureCpp中復制過來
3. 代碼如下, 運?結果: Result: 1733793664 Elapsed: 125
// NativeDLLCpp.cpp : 定義 DLL 應?程序的導出函數。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include
"CppFunction.h"
using namespace std;
#ifdef __cplusplus

#define TEXPORT extern "C" _declspec(dllexport)
#else
#define
TEXPORT _declspec(dllexport)
#endif
TEXPORT int Test()
{

DWORD start = ::GetTickCount();
CppFunction cppFunction;

int result = 0;
for (int i = 0; i < 10000; i++){
for (int j = 0; j < 10000; j++){
result += cppFunction.TestFunc(i, j);
}
}D
WORD end = ::GetTickCount();
cout <<
"Result: " << result << " Elapsed: " << end - start << endl;
return result;
}
V
iew Code

public class NativeDLLCpp
{
[DllImport(
"NativeDLLCpp.dll")]
public static extern int Test();
}
c
lass
Program
{

static void Main(string[] args)
{
DateTime start = System.DateTime.Now;

int result = NativeDLLCpp.Test();
DateTime end = System.DateTime.Now;
System.Console.WriteLine(
"Result: " + result + " Elapsed: " + (end - start).Milliseconds);
}
}

View Code
性能分析:
跟純
C++項?性能?乎?致。
項?依賴項需要?動設置。
實現聯調的?法: 修改
C#項?屬性|調試|啟?本機代碼調試

Copyright © 2020-2022 南京傾心軟件技術有限公司 版權所有     蘇ICP備2020070309號-1
QQ在線咨詢
13605185909
返回頂部
精东影业在线观看| 中文字幕亚洲情99在线| 亚洲国产精品人久久电影| 国模精品一区二区三区| 国产在线电影| 精久久久久久| 精品国产户外野外| 91久久在线播放| 性欧美精品孕妇| 亚洲国产精品综合久久久| 亚洲高清视频在线| 成人免费在线网址| 成人在线观看黄色| 亚洲欧美bt| 亚洲福利在线看| 男人添女人荫蒂免费视频| 性欧美hd调教| 久久久久国产精品厨房| 97视频在线观看视频免费视频| 成人免费xx| 欧美一区二区三区高清视频| 久久久国产一区二区三区四区小说 | 国产精品三级a三级三级午夜| 97在线观看播放| 欧美天堂一区| 国产日韩欧美制服另类| 91久久国产婷婷一区二区| 超碰97国产在线| a√免费观看在线网址www| 女同性恋一区二区| 久久野战av| 欧美最猛黑人xxxxx猛交| 午夜精品免费视频| 亚洲第一会所| 色噜噜狠狠色综合欧洲selulu| 精品成人久久av| 国产日韩精品综合网站| 日本一区二区三区视频视频| 中文字幕在线视频日韩| 久草视频国产在线| 日本欧美高清| 亚洲一线二线三线久久久| 岛国视频一区| 91久久国产综合久久91猫猫| 久久黄色网页| 久久精品国产清自在天天线| 亚洲成色www.777999| 自拍亚洲一区| 欧美在线观看一二区| 无颜之月在线看| 日韩高清一级| 欧美中文字幕久久 | 日韩三级av在线播放| 法国空姐在线观看免费| 精品国产亚洲一区二区在线观看 | 91成人高清| 久久99热99| 性色av一区二区三区| 国产精品四虎| 国内精品国产三级国产a久久| 久久精品色欧美aⅴ一区二区| 黄色春季福利在线看| 亚洲经典三级| 亚洲最新视频在线| 777.av| 在线视频精品| 草民午夜欧美限制a级福利片| 992tv在线影院| 秋霞电影一区二区| 欧美国产日韩在线| 日本一区二区三区在线观看视频| 蜜桃av噜噜一区| 97超碰色婷婷| 成年网站在线视频网站| 国产精品美女久久久久久2018| 高清国产一区| 97视频一区| 日韩你懂的电影在线观看| 成人福利视频在| 琪琪一区二区三区| 国产精品2018| 精品久久毛片| 欧美日韩成人高清| 国产成人黄色网址| 久久99热狠狠色一区二区| 国产精品视频自拍| 日韩毛片在线| 欧美视频日韩视频| 美女网站视频黄色| 麻豆精品视频在线观看免费 | 欧美专区福利免费| 国产精品乱人伦中文| 日韩一区二区三区高清| 亚洲系列另类av| 在线看欧美日韩| av福利在线导航| 黑人巨大精品欧美一区二区免费| 国产原创popny丨九色| 亚洲一区二区伦理| 亚洲自拍欧美另类| 一区二区三区四区高清视频| 欧美成人在线直播| 四虎永久在线精品无码视频| 亚洲福利国产| 成人妇女免费播放久久久| 91精品国产乱码久久久竹菊| 亚洲娇小xxxx欧美娇小| 国模吧精品人体gogo| 亚洲乱码中文字幕| 国产成人亚洲精品无码h在线| 日韩精品久久久久久| 亚洲一区二区三区四区视频| 中日韩免视频上线全都免费| 欧美黑人一级爽快片淫片高清| 国产在线美女| 91精品久久久久久蜜臀| 狠狠狠综合7777久夜色撩人| 亚洲免费电影在线| 我要看一级黄色大片| www.欧美日韩| 国产精品va在线观看无码| 蜜桃一区二区三区在线观看| 国产伦精品一区二区三区在线 | 亚洲免费伊人电影在线观看av| 幼a在线观看| 色综合久久久久| 欧美12一14sex性hd| 一区二区三区在线观看国产| 黄网免费视频| 亚洲综合激情网| 婷婷六月天丁香| 亚洲午夜三级在线| 久草视频在线看| 91国偷自产一区二区三区成为亚洲经典| 95影院理论片在线观看| 亚洲观看高清完整版在线观看| 可播放的18gay1069| 亚洲一区av在线| 在线免费日韩| 色欧美乱欧美15图片| 成人性生交大片免费看午夜| 欧美日韩dvd在线观看| 黄色av电影在线播放| 亚洲电影免费观看| 欧美va在线观看| 久久色免费在线视频| 精品视频在线你懂得| 国产精品久久久久久av福利| 久久久久午夜电影| 免费成人深夜夜行视频| 激情综合五月婷婷| 日韩欧美视频网站| 国产精品美女久久久久久久久| 97影院理论片在线播放| 亚洲h精品动漫在线观看| 成人高清免费观看mv| 亚洲国产91色在线| 欧美特黄不卡| 26uuu另类亚洲欧美日本一| 日韩在线观看| 蜜桃臀一区二区三区| 国产**成人网毛片九色 | 丁香婷婷综合网| 日韩一区二区三区久久| 精品久久在线播放| 超碰资源在线| 992tv在线成人免费观看| 五月精品视频| 日本久久久网站| 亚洲码国产岛国毛片在线| 久久精品视频免费看| 久久精品国产综合| 偷拍欧美精品| 51xx午夜影福利| 一区二区三区四区视频精品免费| 国产黄在线播放| 亚洲午夜女主播在线直播| 日韩欧美影院| 欧美日韩国产高清视频| 97se亚洲国产综合自在线| 宅男午夜在线| 日韩高清免费观看| 亚洲人成精品久久久| 久久久久久久久四区三区| 26uuu精品一区二区在线观看| 日本私人网站在线观看| 精品小视频在线| 国产调教一区二区三区| 亚洲v国产v| 中文字幕综合网| 成人国产免费电影| 欧美极品少妇xxxxⅹ裸体艺术| 海角社区69精品视频| 国产精品-区区久久久狼| 欧美高清hd18日本| 精品自拍偷拍| 青青视频免费在线| 欧美亚洲综合一区| 久久99成人| 欧美在线一区二区三区四区|