没有合适的资源?快使用搜索试试~ 我知道了~
用 C# 编写更快的托管上位机程序代码.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 79 浏览量
2023-04-10
19:22:43
上传
评论
收藏 596KB PDF 举报
温馨提示
试读
13页
。
资源推荐
资源详情
资源评论
Tip of my blog
//---------------------------- 唤醒自已 ------------------------------
我们需要被唤醒,并找到自已此生的真正目的,不能再盲目、无意识地生活下
去;而这个人就是自已!其实,每个人在“宇宙”看来都是一个“质点”,不要空
谈解救全人类这些虚无飘渺得有点假的理想,要做的只是发现、激发自已向积极的
一面进化,使之成为自已潜意思下的信仰,百年回归“宇宙”时,才能接受“宇宙”轮回给自已
的更为重要的使命!
//------------------- 2011 年潜意识训练 -------------------------
1、不说“不可能”;
2、凡事第一反应: 找方法,不找借口;
3、遇到挫折对自己说声:太好了,机会来了!
4、不说消极的话,不落入消极的情绪,一旦发生立即正面处理;
5、凡事先订立目标;
6、行动前,预先做计划;
7、工作时间,每一分、每一秒做有利于生产的事情;
8、随时用零碎的时间做零碎的事情;
9、守时;
10、写点日记,不要太依靠记忆;
11、随时记录想到的灵感;
12、把重要的观念、方法写下来,随时提示自己;
13、走路比平时快 30%,肢体语言健康有力,不懒散、萎靡;
14、每天出门照镜子,给自己一个自信的微笑;
15、每天自我反省一次;
16、每天坚持一次运动;
17、听心跳一分钟,在做重要的事情,疲劳时,紧张时,烦躁时。。。。
18、开重要会议或将要做重要事情前要先“彩排”或“在头脑里走几遍”;
19、微笑;
20、用心倾听,不打断对方的话;
21、说话有力,感觉自己的声音能产生感染力的磁场;
22、说话之前,先考虑一下对方的感觉;
23、每天有意识赞美别人三次以上;
24、即时表示感谢,如果别人帮助了你的话;
25、控制住不要让自己作出为自己辩护的第一反应;
26、不用训斥、指责的口吻与别人说话;
27、每天做一件”分外事“;
28、不关任何方面,每天必须至少做一次”进步一点点“,并且有意识的 提高;
30、每天下班前 5 分钟做一下今天的整理工作;
31、定期存钱;
32、节俭;
33、时常运用”头脑风暴“,利用脑力激荡提升自己创新能力;
34、恪守诚信;
35、学会原谅
//------------------------------------------
Email: [email protected]
QQ: 279285134
[上位机程序设计专题]用 C# 编写更快的托管上位机程序代码(原
创:zj_qzm)
阅读全文(4514) | 回复(2)
注:请常常上 MSDN 搜一下,里边有很多大师级程序员写的关于如何优化托和提
高“托管代码”性能的好文。
用 C# 编写更快的托管上位机程序代码 (原创:zj_qzm)
为什么我会用 C#来写工控程序,而不是 C++呢?原因有两个,第一,我不想用
MFC 来写程序,第二,由于有了 C#的出现。当然了,用 C++写程序有一个很大的
优点就是“快”,而且部署容易;而 C#呢,由于它是机于 Framework 的,要安
装运行时库,而且比 C++要慢。
但是 C#也有它天生的优点,我最看重的就是开发的效率极高(这是 VC++的缺点
所在),而且容易上手,现在也有很多基于 .NET Framework 的工控相关的资源
可用,比如 NI 的 Measurement Studio.Net 组件就是专门为 Visual Studio.NET
而开发的,里面有丰富的 UI 资源和各种工业控制所用到的算法、波形产生函数、
软件滤波、PID 等等都已集成成 类方法的形式提供给调用者。
由于现在的电脑已经非常快,内存也很大,所以,代码的速度和效率比起来效率
占了上风,但并不是就不用考虑代码的速度了。因此,我在此总结出用 C#如何
写出接近 C++代码速度的方法。这对于上位机这种实时性要求比较高的程序是很
有用的。
首先要清除一个误区,.NET Framework 的代码速度和 java 根本不是一个层次
的,尽管它们都是托管代码,但是 JAVA 只能写蜗牛应用程序,而 .NET Framework
托管代码能写出很快的本地应用程序。
为什么呢?原因就在于它的“实时编译器”, CLR 使用 JIT(实时)编译器将
CIL 中的各种方法编译成本机 x86 代码,然后运行本机代码。尽管 JIT 在编译
首次调用的方法时会稍有延迟,但所调用的各种方法在运行纯本机代码时都不需
要解释性的系统开销。
与传统的脱机 C++ 编译过程不同,JIT 编译器花费的时间对用户来说都是“时
钟时间”延迟,因此 JIT 编译器不具备占用大量时间的彻底优化过程。尽管如
此,JIT 编译器所执行的一系列优化仍给人以深刻印象:
常量重叠
常量和复制的传播
通用子表达式消除
循环不变量的代码活动
死存储 (Dead Store) 和死代码 (Dead Code) 消除
寄存器分配
内联方法
循环展开(带有小循环体的小循环)
结果可以与传统的本机代码相媲美,至少是相近。
至于数据,可以混合使用值类型和引用类型。值类型(包括整型、浮点类型、枚
举和结构)通常存储在栈中。这些数据类型就像 C/C++ 中的本地和结构一样又
小又快。使用 C/C++ 时,应该避免将大的结构作为方法参数或返回值进行传送,
因为复制的系统开销可能会大的惊人。
引用类型和装箱后的值类型存储在堆中。它们通过对象引用来寻址,这些对象引
用只是计算机的指针,就像 C/C++ 中的对象指针一样。 因此实时编译的托管代
码可以很快。
以下就是编写快速本机代码的原则:
1、不要创建不必要的对象
托管代码与本机代码的最大不同之处在于自动内存管理。您可以分配新的对象,
但 CLR 垃圾回收器 (GC) 会在这些对象无法访问时自动释放它们。GC 不时地运
行,通常不为人觉察,但一般会使应用程序停止一两毫秒,偶尔也会更长一些。
不过 GC 是一个很优秀的内存管理专家。但是我们也要记住,不要创建不必要的
对象。由于自动内存管理消除了许多对象分配和释放方面的复杂情况、问题和错
误,并且用起来又快又方便,因此我们会很自然地想要创建越来越多的对象,最
终形成错综复杂的对象群。如果您想编写真正的快速托管代码,创建对象时就需
要深思熟虑,确保对象的数量合适。
将组件和应用程序作为 CIL 的程序集的最大好处之一是,您的程序可以做到每
秒都变快、每年都变快。“每秒都变快”是因为运行时(理论上)可以在程序运
行时重新调整 JIT 编译的代码;“每年都变快”是因为新发布的运行时总能提
供更好、更先进、更快的算法以将代码迅速优化。因此,如果 .NET 1.1 中的这
几个计时不是最佳结果,请相信在以后发布的产品中它们会得到改善。 而且在
剩余12页未读,继续阅读
资源评论
若♡
- 粉丝: 6172
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Pytorch训练CIRAR10上分类算法.zip
- Pytorch-pytorch深度学习教程之Tensorboard.zip
- 基于C++和Python开发yolov8-face作为人脸检测器dlib作为人脸识别器的人脸考勤系统源码+项目说明.zip
- Pytorch-pytorch深度学习教程之变分自动编码器.zip
- Pytorch-pytorch深度学习教程之神经风格迁移.zip
- Pytorch-pytorch深度学习教程之深度残差网络.zip
- Pytorch-pytorch深度学习教程之循环神经网络.zip
- Pytorch-pytorch深度学习教程之逻辑回归.zip
- Pytorch-pytorch深度学习教程之双向循环网络.zip
- Pytorch-pytorch深度学习教程之卷积神经网络.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功