Framework从来不是为性能设计的
#54楼 2008-04-17 17:04 BlueMountain
不过,因为即时编译的结果是保存在内存中的,因此对于那些会频繁启动的程序来讲,其启动过程是会比较慢的——因为每次启动都需要加载CLR并做一次即时编译。
----------------------------------------------------------------
lz确定是在内存中么,c:\windows\Assembly\GAC_32
c:\windows\Assembly\NativeImages_v2.0.5XXXX
那些文件夹里面存的是什么啊??
回复 引用 查看 删除 修改
----------------------------------------------------------------
@BlueMountain
文件夹存的是程序集阿 GAC中是共享程序集 Assembly中的本地程序集的一个拷贝 LZ说的是对的 即时编译结果是在内存中 JIT的事情
回复 引用 查看
下面这个图,我想知道gac里面的是assembly,那么gac_32呢 gac_msil呢 nativeimages_XX呢 感觉它们好像是存的镜像阿 jit编译的结果仅能存在内存里面么?这样子也未免太笨了吧 ngen生成的又是存在什么地方的呢
#55楼 2008-04-17 17:17 Mainz
看和谁比较了,和汇编,C,C++比,当然慢了;和java比就不一定了。
我觉得最好是核心算法用C或C++保证效率,其他的用C#,扬长避短,效果最好
#56楼 2008-04-17 17:23 222 [未注册用户] .net也只配和java比比了
#57楼 2008-04-17 17:33 Da Vinci @BlueMountain
GAC_32是JIT编译的针对32bit机器的程序集 如果是64位的话在syswow路径下面也能找到.因为GAC_32是.NET2.0引入的, 它与GAC的区别是GAC下的是.NET1.1的程序集, GAC_32只是.NET2.0的程序集,没有.NET1.1的.
GAC.MSIL里面是一些轻量级的程序集
这些都是32位机器才有,64位就一个GAC_64
ngen.exe和这些没关系,看你编译的参数,如果你是私有程序集,就是你自己指定的路径阿
#58楼 2008-04-17 18:05 研究者 [未注册用户] 你应该多看看相关的
资料再来说这个事情!!!!!!
#59楼 2008-04-17 18:06 研究者 [未注册用户] 不知道它的工作机制就不要在此发表言论,OK?
#60楼 2008-04-17 18:09 BlueMountain @Da Vinci
就是说jit编译的结果的确是仅仅在内存中的,多谢!
#61楼 2008-04-17 19:38 GoGoSonny VC6第一次启动快,但VS2005 2008下一次启动快!
比C++,有劣势,但也有优势。
对于JAVA,.NET没的说。
对于脚本,复杂的.NET有优势。
#62楼 2008-04-17 21:36 techmango [未注册用户] 有这么复杂吗?!看了头晕啊
#63楼 [楼主] 2008-04-17 22:20 没有昵称 @研究者
er,,,我确实是仔细的看了两天
资料确认了之后才写出来的啊。
不过如果帅哥觉得我说的不对,你可以告诉我错在哪里么?我也好继续学习。
#64楼 [楼主] 2008-04-17 22:51 没有昵称 呵呵,,,好像很多朋友在这里研究起来谁快谁慢的问题了,呵呵,离题了离题了。
不过,既然这个问题这么敏感,那我就顺便贴两个地址,各位可以看一下这位仁兄在遇到问题的时候是怎样处理的。
先看这个:http://www.cnblogs.com/wuchang/archive/2006/12/07/584997.html
再看这个:http://eparg.spaces.live.com/blog/cns!59bfc22c0e7e1a76!2274.entry
这位仁兄的做法很值得我们思考。他在发现问题的时候第一反应是去分析问题找原因,并最终拨开迷云找到了事情的真相。相信也正是这样的探索精神让这位仁兄成为一个大牛的。
#66楼 2008-04-18 10:01 Anytao 补充:MSCorEE.dll中的代码来启动CLR并做一些初始工作,这些初始化主要包括:
1 创建内存;
2 创建线程池;
3 创建应用程序域名。
关于性能,.NET其实已经有很多优化策略,其自动内存管理上有诸多的优化机制,相