久久一区二区中文字幕_日韩人体视频_国产影视一区_久久爱www.

南京軟件定制開發

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

13605185909

新聞資訊

NEWS CENTER
欄目導航

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

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

ThinkPad T430 i5-3230M 2.6G 8GWin7 64Bit, VS2013C++開發設置) , 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
返回頂部
久久一区二区中文字幕_日韩人体视频_国产影视一区_久久爱www.
亚洲一区二区三区美女| 欧美日韩高清一区二区三区| 日韩av电影免费观看高清完整版| 久久精品免费观看| 欧美色倩网站大全免费| 国产蜜臀97一区二区三区| 精品一区二区在线视频| 精品污污网站免费看| 亚洲免费观看高清完整版在线 | 亚洲成av人影院在线观看网| a4yy欧美一区二区三区| 中文字幕在线观看一区| 成人av网址在线| 中文字幕av在线一区二区三区| 国产一区二区看久久| 欧美精品一区二区三区高清aⅴ| 奇米四色…亚洲| 7777精品伊人久久久大香线蕉最新版| 香蕉av福利精品导航| 7777精品伊人久久久大香线蕉完整版| 亚洲123区在线观看| 欧美视频一区二区三区在线观看 | 欧美一级片免费看| 精品一区二区三区免费| 精品久久久久久综合日本欧美| 蜜臀va亚洲va欧美va天堂| 91精品国产综合久久蜜臀| 麻豆成人久久精品二区三区红| 制服.丝袜.亚洲.另类.中文| 日本aⅴ免费视频一区二区三区| 精品久久国产97色综合| 国产精品主播直播| 中文字幕在线免费不卡| 欧美日韩午夜影院| 蜜臀久久久久久久| 久久久不卡网国产精品二区 | 久久久99精品免费观看| 国产福利一区二区三区视频在线 | 91丨porny丨在线| 亚洲成人777| 久久综合狠狠综合久久激情| 国内欧美视频一区二区 | 91香蕉视频黄| 亚洲va国产va欧美va观看| 欧美一区二区三区日韩视频| 国产真实乱对白精彩久久| 国产精品久久久久久户外露出| 欧美伊人久久大香线蕉综合69| 亚洲大片一区二区三区| 欧美精品一区二区三区视频| av中文字幕在线不卡| 亚洲国产中文字幕| 久久久www成人免费毛片麻豆| 福利一区二区在线| 日韩电影免费在线观看网站| 国产欧美综合在线观看第十页| 国产盗摄精品一区二区三区在线 | 国产不卡视频在线观看| 在线观看视频一区二区欧美日韩| 奇米色777欧美一区二区| 国产女主播视频一区二区| 色婷婷综合久久久| 精品一区二区三区影院在线午夜| 亚洲特黄一级片| 精品乱人伦小说| 欧美日韩一级二级| 99re这里都是精品| 乱一区二区av| 日韩在线一区二区| 中文字幕一区二区三区蜜月| 精品国产一区二区国模嫣然| 日本高清不卡视频| 不卡一区二区三区四区| 极品少妇xxxx精品少妇偷拍| 亚洲国产精品一区二区久久恐怖片 | 福利一区福利二区| 久久国产视频网| 日韩高清在线一区| 一区二区国产盗摄色噜噜| 国产精品视频免费看| 欧美大度的电影原声| 69堂精品视频| 欧美午夜精品电影| 在线一区二区三区四区五区| 97精品久久久久中文字幕| 狠狠色丁香婷婷综合| 日本成人在线看| 天天操天天干天天综合网| 亚洲综合男人的天堂| 国产精品萝li| 国产精品不卡在线观看| 国产欧美日韩在线| 国产欧美一区二区精品性色超碰 | 天天影视涩香欲综合网| 亚洲综合丝袜美腿| 一区二区激情视频| 亚洲成av人片www| 日韩精品三区四区| 日本不卡免费在线视频| 日韩高清不卡一区二区三区| 欧美a一区二区| 极品少妇一区二区三区精品视频| 国产美女一区二区| 国产不卡视频一区二区三区| 国产成人综合在线| 97aⅴ精品视频一二三区| 一本一道久久a久久精品综合蜜臀| 99久久er热在这里只有精品15 | 国产精品久久二区二区| 亚洲视频 欧洲视频| 亚洲精品乱码久久久久| 丝袜亚洲精品中文字幕一区| 国产一区视频在线看| 国产毛片精品视频| a美女胸又www黄视频久久| 色综合久久88色综合天天6| 欧美性猛交xxxx乱大交退制版| 欧美日韩一级二级| 欧美成人官网二区| 国产精品久久久久久久蜜臀| 亚洲资源在线观看| 国产在线视频一区二区三区| 91丝袜美女网| 欧美一二三区精品| 国产精品嫩草影院com| 亚洲自拍偷拍网站| 狠狠色丁香久久婷婷综合_中 | 欧美丰满一区二区免费视频| 久久久青草青青国产亚洲免观| 中文字幕在线不卡| 日韩av成人高清| www.色精品| 91精品国产一区二区三区香蕉| 久久先锋资源网| 亚洲一区二区三区四区在线| 国产精品 日产精品 欧美精品| 在线观看日韩国产| 国产精品网站一区| 日韩电影一区二区三区| 成人av电影在线播放| 欧美一区欧美二区| 亚洲欧美色综合| 粉嫩aⅴ一区二区三区四区| 制服丝袜日韩国产| 亚洲一区二区三区视频在线 | 欧美韩国一区二区| 激情成人综合网| 在线不卡a资源高清| 玉米视频成人免费看| 国产另类ts人妖一区二区| 欧美电影影音先锋| 综合色天天鬼久久鬼色| 国内精品国产三级国产a久久| 欧美午夜精品电影| 亚洲青青青在线视频| 国产98色在线|日韩| 精品人伦一区二区色婷婷| 亚洲成人午夜影院| 日本黄色一区二区| 一区二区欧美在线观看| k8久久久一区二区三区| 国产日韩欧美综合在线| 国产一区三区三区| 日韩精品最新网址| 青青草伊人久久| 91精品国产aⅴ一区二区| 亚洲高清视频在线| 欧美日韩情趣电影| 亚洲成人免费电影| 7777女厕盗摄久久久| 日韩综合一区二区| 日韩欧美国产一区二区三区| 免费一级片91| 日韩精品中文字幕在线不卡尤物| 日韩和欧美一区二区| 91精品国产美女浴室洗澡无遮挡| 视频一区二区国产| 日韩精品一区国产麻豆| 黑人巨大精品欧美黑白配亚洲| 精品久久久久久久久久久久包黑料| 日韩一区精品字幕| 精品国产123| 国产成人自拍高清视频在线免费播放| 久久综合九色综合欧美98| 国产91精品一区二区麻豆网站| 欧美激情综合在线| 94-欧美-setu| 亚洲va中文字幕| 欧美一级理论片| 国产精品乡下勾搭老头1| 国产精品少妇自拍| 在线看一区二区| 蜜臀av性久久久久蜜臀aⅴ| 日韩亚洲欧美高清| 成人性生交大片免费看在线播放| 亚洲色图欧洲色图婷婷| 欧美肥妇bbw| 成人国产电影网| 亚洲福中文字幕伊人影院| 欧美综合亚洲图片综合区|