网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
.Net,你为什么会慢
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
ly\NativeImages_v2.0.5XXXX
那些文件夹里面存的是什么啊??
#40楼  2008-04-17 13:21 Da Vinci @BlueMountain
文件夹存的是程序集阿 GAC中是共享程序集 Assembly中的本地程序集的一个拷贝 LZ说的是对的 即时编译结果是在内存中 JIT的事情
#41楼  2008-04-17 13:22 李战 路过,这里大都玩.NET的
楼主也不说和谁比,这样就有热闹看,高,实在是高!
#42楼 [楼主] 2008-04-17 13:58 没有昵称 @Da Vinci
帅哥太客气啦~~~java我不熟悉,这个不清楚呵。
偶现在还没来得及接触java。我搞.net之前是搞VC的,一直都没脱离windows平台。其实我的一些底层的知识也是在原来搞VC的时候学到的。^_^

原本打算准备学习一下java的源代码,不过因为要学的东西太多,还没开始呵。。
#43楼 [楼主] 2008-04-17 13:59 没有昵称 @李战
和非托管程序比。不管是c、c++、vb、vc等等,他们生成的winapp的编译、加载过程都是一样的。
偶想说的重点是通过比较他们的加载过程和编译过程,了解.net为啥这么慢,而不是比较谁快谁慢的问题呵。^_^

#44楼  2008-04-17 14:19 路人小刀 [未注册用户] 实际上,IL中的方法并不是每次被调用时都会被重新编译一次
----------------------------------------------------------------
难怪程序第一次运行时的速度,是如此让人恼火!
#45楼  2008-04-17 14:21 路人小刀 [未注册用户] 托管程序此时却跳转到了另一个函数中。那么这个函数是哪里的呢?
1). 这个函数在一个叫做MSCorEE.dll的动态链接库文件中,当安装了.net框架时就会被复制在系统目录下。
2). 系统会根据托管程序PE文件中的信息找到这个DLL,
3). 然后通过MSCorEE.dll的PE文件信息找到这个_CorExeMain函数的入口地址,
4). 然后修改刚才的JMP指令要跳转的地址,从而将控制跳转到了_CorExeMain这个函数里面去。
5). 然后,在这个函数里面,CLR被启动了,并做了若干的初始化工作,
6). 然后再通过托管程序的CLR表头找到托管程序的入口地址,并将控制跳转到这里,
7). 于是托管程序开始运行
----------------------------------------------------------------
一共有七个步骤,挺有意思的
#46楼  2008-04-17 14:30 大林 [未注册用户] .net算好了,以前编译过一JAVA的项目,竟然编译了半小时才完成
#47楼 [楼主] 2008-04-17 14:32 没有昵称 @路人小刀
整理的很清晰哈。^_^

其实这里面的第六步,“将控制跳转到这里”之前,即时编译器需要把入口函数从IL代码编译成CPU指令,然后才能跳转过去。文章里面讲到这个的时候还没提到即时编译,当时就没指出呵。^_^
#48楼  2008-04-17 14:35 justleo [未注册用户] 其实程序慢的做要原因还是程序设计本身
#49楼  2008-04-17 14:45 A.Z! [未注册用户] --引用--------------------------------------------------
boyxia: 应该和java比比。
--------------------------------------------------------


支持
#50楼  2008-04-17 15:10 随风逝去(叶进) 知其所以然了,那该怎么变化,从而改进其执行速度呢?

#51楼 [楼主] 2008-04-17 15:22 没有昵称 @随风逝去(叶进)
我觉得,第一,可以让程序少启动,不过这个适用范围不大;另一个就是多用“延迟加载”。
#52楼  2008-04-17 15:35 Da Vinci @随风逝去(叶进)
改进程序执行速度的方法有很多, 算法, 一些设计模式等等. 针对程序本身原理而言也有很多, 引用类型和值类型的设计, 调用, 方法设计等等. 总之看你具体怎么用. 举一些例子就是在尽量构造函数中初始化字段而不是在类型中初始化; 避免装箱; 延迟加载也是; 用is而不是强制转型很多
#53楼  2008-04-17 16:40 birdshome 通用的

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号