seerx性欧美巨大_久久一区国产_亚洲日本久久久午夜精品_久久精品2019中文字幕

南京軟件定制開發

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

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
返回頂部
日韩成人av在线| 日韩av在线免费播放| 午夜毛片在线观看| 日韩黄色免费电影| 岛国av免费在线| 亚洲免费成人av在线| 日韩免费一区二区三区| 高潮在线视频| 国产精品成av人在线视午夜片| 91黑丝在线| 日韩不卡中文字幕| 国产人成免费视频| 欧美午夜免费电影| 成人午夜免费在线观看| 成人欧美一区二区三区在线播放| 久久久久久av无码免费网站| 久久国内精品视频| 欧美大片免费播放器| 亚洲视频综合| 国内国产精品天干天干| 欧美精品尤物在线观看| h无码动漫在线观看| 精品国产亚洲日本| 青青草成人网| 小早川怜子影音先锋在线观看| 成人黄色影片在线| 日本三级在线视频| 日本欧美黄网站| 伦理片一区二区三区| 久久99国产精品自在自在app| 2019中文字幕视频| 亚洲欧美一区二区三区久久| 91av福利| 日韩美女一区二区三区四区| 中文字幕久热在线精品| 色伊人久久综合中文字幕| 精品国产免费无码久久久| 一区二区三区欧美亚洲| 姑娘第5集在线观看免费好剧| 久久综合给合久久狠狠狠97色69| 老妇女50岁三级| 成人在线视频一区二区| 99久久精品久久亚洲精品| 精品一区二区在线看| 韩国女同性做爰三级| 日韩av高清在线观看| www.狠狠爱| 紧缚捆绑精品一区二区| 国产18无套直看片| 国产精品综合av一区二区国产馆| av最新在线观看| 国产成人8x视频一区二区 | 狠狠干在线视频| 超碰91人人草人人干| 日本高清视频网站www| 久久精品亚洲热| 天堂影视av| 欧美激情一二三| 麻豆导航在线观看| 国产91露脸中文字幕在线| 黄色网址免费在线观看| 成人高清视频观看www| 国产精品探花在线| 国产高清自拍一区| 精品免费av在线| 日韩影片在线播放| 超碰成人福利| 奇米影视亚洲色图| 色狮一区二区三区四区视频| 五月婷婷之综合激情| 欧美日韩一区二区国产| 亚洲一区二区三区四区av| 秋霞成人午夜伦在线观看| 欧美自拍偷拍网| 不卡的看片网站| 国产精品一区二区三区四| 国产精品福利av| 精品国产乱码一区二区三| 色综合天天综合网天天狠天天| 久久全国免费久久青青小草 | 在线观看av片| 奇米影视亚洲狠狠色| 成人在线免费看片| 肥熟一91porny丨九色丨| 日韩电影大全网站| 最新精品视频| 精品中文一区| 免费精品99久久国产综合精品应用| 亚洲欧洲一区| 久久av无码精品人妻系列试探| 国内外成人在线| 日本一级淫片免费放| 国产精品天天看| 精品久久久中文字幕人妻| 欧美视频一区二区| 人人在草线视频在线观看| 在线观看欧美日韩国产| 爽爽视频在线观看| 国产精品尤物福利片在线观看| 国产调教在线| 亚洲欧美日本国产有色| 日韩高清三区| 亚洲三级在线观看视频| 日韩中文字幕不卡| 在线免费看av网站| 国产精品美女久久久久久| 性一交一乱一色一视频麻豆| 欧美日韩极品在线观看一区| 一级黄色免费| 久久视频在线视频| 国产系列在线观看| 成人自拍偷拍| 成人18夜夜网深夜福利网| 色哟哟精品视频| 久久精品1区| 全程偷拍露脸中年夫妇| 亚洲欧洲国产日韩| 俄罗斯男人又粗又大| 亚洲国产精品va在线| 久久久久久五月天久久久久久久久| 国产成人亚洲综合91| 1区2区3区在线| 中文字幕精品在线播放| 中文视频一区| 日韩欧美黄色网址| 国产精品污www在线观看| www..69.hd| 亚洲天堂第一页| 草草影院在线观看| 久久久一本精品99久久精品66 | 日韩三级中文字幕| 伦理电影国产精品| 国产美女91呻吟求| 国产亚洲精品精品国产亚洲综合| 伊人成色综合网| 亚洲免费在线| 日韩欧美大片在线观看| 亚洲18色成人| 人人在线视频| 欧美专区中文字幕| 免费高清视频在线一区| 国产亚洲天堂网| 免费高清在线一区| 黄色av网站免费| 欧美日韩成人一区| 黄色av资源| 91福利入口| 日韩超碰人人爽人人做人人添| 在线观看一区二区三区四区| 91美女精品福利| 亚洲日本香蕉视频| 日韩有码在线观看| 黄色成人在线网| 欧美狂野激情性xxxx在线观| 亚洲片区在线| 国产精品xxxx喷水欧美| 欧美性生活一区| 免费观看羞羞视频网站| 91日韩在线视频| 日韩av三区| 亚洲一区二区观看| 中文字幕在线不卡一区二区三区| 欧美人与z0zoxxxx特| 精品综合久久久久久97| 激情aⅴ欧美一区二区欲海潮| 成人在线观看你懂的| 伊人色**天天综合婷婷| 唐朝av高清盛宴| 日本韩国精品在线| 国产一级激情| 亚洲www视频| 久久99精品久久久久久园产越南| 香蕉视频黄色在线观看| 中文字幕亚洲一区二区av在线| 成人欧美日韩| 日本视频久久久| 日韩精品成人| 99久久人妻无码中文字幕系列| 国产精品国产三级国产普通话蜜臀 | 男人的天堂av高清在线| 日本一区二区在线视频| 国产精品v亚洲精品v日韩精品| 日韩女同强女同hd| 欧美一区二区三区啪啪| 久久久pmvav| 在线观看亚洲视频啊啊啊啊| 99亚洲一区二区| 欧美一级做a爰片免费视频| 精品国产91洋老外米糕| 18视频免费网址在线观看| 亚洲av综合色区| 美腿丝袜亚洲综合| 国产综合无码一区二区色蜜蜜| 色悠悠久久88| 在线天堂资源www在线污| jizz欧美激情18| 91丨porny丨户外露出| 欧美性极品videosbest| 97在线视频免费观看| 日本在线视频一区二区三区|