- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CCLI简介
C++/CLI 简介
1. 简介
本文并不是为了奉承 C++/CLI 的辉煌,也不是为了贬低其它如 C#或者 VB.NET 等语言,相反,这只是一个
非官方的、以一个喜欢这种语言的非微软雇员身份来论证 C++/CLI 有它的自己的唯一的角色,可作为第一流
的.NET 编程语言。
一个不断在新闻组和技术论坛上出现的问题是,当象 C#和 VB.NET 这样的语言更适合于这种用途时,为什
么要使用 C++来开发.NET 应用软件。通常这样一些问题后面的评论说是,C++语法是怎样的复杂和令人费解,
C++现在是怎样一种过时的语言,还有什么 VS.NET 设计者已不再像支持 C#和 VB.NET 一样继续支持 C++。其
中一些猜疑是完全荒谬的,但有些说法部分正确。希望本文有助于澄清所有这些围绕 C++/CLI 语言及其在
VS.NET 语言层次中的地位的疑惑,神秘和不信任。请记住,本作者既不为微软工作也没有从微软那里取得报酬,
只是想从技术上对 C++/CLI 作一评判。
2. 快速简洁的本机 interop
除了 P/Invoke 机制可用在另外的象 C#或 VB.NET 这样的语言外,C++提供了一种独有的 interop 机制,称
作 C++ interop 。C++ interop 比 P/Invoke 直观得多,因为你只是简单地#include 需要的头文件,并与需要的库
进行链接就能象在本机 C++中一样调用任何函数。另外,它比 P/Invoke 速度快--这是很容易能证明的。现在,
可争辩的是在实际应用软件的开发中,经由 C++ interop 获得的性能好处与花在用户接口交互、数据库存取、网
络数据转储、复杂数学算法等方面的时间相比可以被忽略,但是事实是在有些情况下,甚至通过每次 interop 调
用节省的几个纳秒也能给全局应用程序性能/ 响应造成巨大影响,这是绝对不能被忽视的。下面有两部分代码片
断(一个是使用 P/Invoke 机制的 C#程序,一个是使用 C++ Interop 机制的 C++程序),我分别记录了其各自代码
重复执行消耗的时间(毫秒)。不管你如何解释这些数据,不管这会对你的应用程序产生什么影响,全是你的事。
我仅打算事实性地指出,C++代码的执行速度要比 C#(其中使用了较多的本机 interop 调用)快。
1) C#程序(使用 P/Invoke)
[SuppressUnmanagedCodeSecurity]
[DllImport(kernel32.dll)]
static extern uint GetTickCount();
[SuppressUnmanagedCodeSecurity]
[DllImport(kernel32.dll, SetLastError = true, CharSet = CharSet.Auto)]
static extern uint GetWindowsDirectory(
[Out] StringBuilder lpBuffer, uint uSize);
static void Test(int x)
{
StringBuilder sb = new StringBuilder(512);
for (int i = 0; i x; i++)
GetWindowsDirectory(sb, 5 );
}
static void DoTest(int x)
{
uint init = GetTickCount();
Test(x);
uint tot = GetTickCount() - init;
Console.WriteLine(Took {0} milli-seconds for {1} iterations,tot, x);
}
static void Main(string[] args)
{
DoTest(50000);DoTest(500000);DoTest(1000000);DoTest(5000000);
Console.ReadKey(true);
}
2) C
您可能关注的文档
- 2012深圳申论密卷.pdf
- 2012清明节郊游活动方案-v2.6.doc
- 2012温州中学自主招生科学模拟试卷.doc
- 2012理高三综合数学试题2.doc
- 2012版中考二轮复习化学精品课件 (含2011中考真题) 广东专版 专题二身边的化学物质(二)(共112张PPT).ppt
- 2012电子设计竞赛 ”电子产品设计与制作“ 技术说明书.doc
- 2012研究生临床应用解剖题.doc
- 2012结婚必看的 新娘礼仪.doc
- 2012美国大学生数学建模竞赛 MCM A题.doc
- 2012老马街小学六一活动方案.doc
- 某某单位2024年党建工作总结及2025年工作计划.doc
- 某某市发改委关于2024年度落实党风廉政建设工作责任制情况的报告.doc
- 某某局2024年全面从严治党和党风廉政建设工作总结.doc
- 某某区财政局2024年法治政府建设总结及2025年工作谋划.doc
- 2024年党管武装工作述职报告2篇.doc
- 2024年度国企党委书记抓基层党建工作述职报告3篇.doc
- 公司党委书记2024年述职述廉报告.docx
- 2024年度乡镇党委领导班子民主生活会(四个带头)对照检查材料.doc
- 市医疗保障局关于2024年法治政府建设工作情况的报告.docx
- 市民政局党组2024年巡察整改工作情况报告.docx
文档评论(0)