谁知道 vc是用的什么编译器啊 ,我想知道
解决方案 »
- QQ3,BITCOM,和 RAYFILE 的下载地址协议解密?
- VS2008的使用问题(串口编程,怎么把新添加的组件包含在静态文件库中)
- 在C++中 宏定义时的数的进制问题?
- 如何给自己创建的button换个icon
- 高分请问怎么样动态的创建几个Radio控件,在线急等啊,请高手看过来
- 如何部分模块 XP风格化?dll中实现xp风格
- 怎么用编辑框获得多个文件路径?
- 愚昧的问题:Doc和View ,在线等代
- 谁用过PCL-812数据采集卡?在VC程序里如何实现不间断精确定时采集?采集频率可以达到多少?救命!!!
- 在C++中修改Windows2000用户的密码?大虾来看!!
- 求大神指导,是朴素贝叶斯数据挖掘算法检测垃圾邮件相关的
- 创建了一个密码校验对话框,但调试时文本框无法输入密码
INTEL的版本05年前我也一直和VC做比较,从7.0开始,一直不如VC,它有一些特性可能对某些用户有帮助,比如说循环展开和SSE的支持,但高价用户会手工处理这些问题,效率比它高,循环该展开的才展开,不该展的被自动展了白白降低缓存效率。
你一定没有用优化选项,release版优化全开的情况下,VC比VS2008至少慢30%,除非你的机器是奔腾2以下的
C++ builder啦,以及什么DEV C++了等等!
还有一个原因是我准备移植程序到64位,再拿2008和VC6做比较已经没意义了,但我还会关注INTEL,看看64位谁快。
同样,我的源程序也是高度优化,因为C函数都无法满足我的效率要求,很多函数得用查表编码自编。
实际上,代码本身怎么样并不重要,效率低的代码所有的编译器编译效率都低,不影响编译器的表现的,你可以搜一下CSDN里不少关于VC6和VS2005、VS2008讨论的帖子,测试结果VC6慢100%都有
至于和VC2005比,当时测出VC6高出1%,还小一点。优化的方法有变化,速度小的差距是可以理解的。
如果你不信的话,说明你还是没有真正研究优化选项,不要拿64位来自相矛盾,既然VC6没有64位,intel你又认为比较慢,谁和谁比快啊……VC6的垃圾多是出了名的,VC6的经典仅限于他那个时代而已。
这说明你根本不懂VS,我说过微软的所有C库函数都在msvcrt.dll里,不信的话,你编一个hello world,然后忽略msvcrt.lib,release编译,能通过的话就怪了。微软的所有C库函数都是利用API和微软本身的二进制库实现的,怎么会和操作系统没关系?
关于速度比较讨论我在GOOGLE搜了好多,VC2008以前的言论,大都认为2005和VC互有胜负。
#include <stdio.h>int main()
{
printf("hello,world!");
return 0;
}
忽略微软运行库后就是这样,如果连这都叫“其实核心都可以脱离操作系统运行”,我真无语了,第一个(缓冲区检查)和第三个错误(crt入口)可以通过设置来去掉,但是连printf都得微软运行库的支持,我真不懂你是怎么编出来“脱离操作系统运行”的程序的1>a.obj : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4
1>a.obj : error LNK2001: 无法解析的外部符号 __imp__printf
1>LINK : error LNK2001: 无法解析的外部符号 _mainCRTStartup
我的核心程序连内存分配函数都没,外部程序调用的时候给个内指针,memcpy到之类的到是有,都是INTRINSIC,不调用DLL。
我已经在裸机无操作系统的情况下测试过了,我的做法是,自己写个启动扇区,把我写的WINDOWS DLL读入内存,跟据PE头重定位。
就因为你说“其实核心都可以脱离操作系统运行”,我才用通用的printf的,如果你用API,那就请收回你说的话吧
和你说话太累。
测试把调用DLL和操作系统掺和在一起,都是外部干扰,测试结果意义何再?你不如去单独测试WINDOWS和DLL把。
当然对于多数应用来说,不会出现我这种应用,但测试比须要我这么测,如果你写3D游行,那就不合适拿来测编译器了,时间大都用来来调用DIRECTX了。或者说你些数据库、操作界面之类的程序,性能也取决于数据引擎的操作系统,和编译器关系不大。那种编造的来搜索1亿个字符串的应用测试也没什么意义,你用文字处理的时候CPU基本就在等候,这种东西不要性能。
至于JAVA我不说了,如果你想去测试JAVA和C的运行库,比较某个库函数哪个快你可以去做,我没兴趣。
谁说测试就得这么测的,你认为你现在的程序能体现优势的有几处?怕绝大部分时间都花在系统dll上了吧,真正能体现编译器优势的,是不调用任何系统api,算法占用99%以上时间的程序,比如你所说的没有意义的字符串搜索,数学计算、图形计算等,如果你没把握VC6在这些方面取胜,那就闭嘴吧!
特别是用了内联汇编的
对各编译器的比较没什么意义无论vc、vs动态、静态编译的PE都要调用windows api
虽然说WINDOWS程序里面必然有WINDOWS API,但是假如跟据PE头信息找出一个DLL函数入口进去,可以不经经过任何WINDOWS API。你可以自己试验,写个简单DLL调用,反汇编一看就明白了。
当然写种程序复杂以后需要一点技巧,你当然不能用malloc, 但你可以用_alloca, 这就不依赖系统了,而且非常好用。
有趣,可以讨论下去
我的意思是 代码优化过,编译器能再优化的空间就少了
如
a=b*4;在等价条件下,编译器可以优化成a=b<<2;
除法优化成乘法
现在你已经将代码写成a=b<<2,那就体现不出各个编译器对a=b*4;的优化结果再说整段代码都用内联汇编来写,编译器都不优化
况且新版的编译器支持更高效的CPU指令
这样的比较体现不出各编译器的特点什么无法并行??
什么什么归根到底也都是和汇编等价的机器码而已PE不调用Windows API,我不知道这是什么技术
无导入表倒是有,只不过是用隐藏方式调用API而已
但加载这个PE本身,就已经执行了一些Windows API
除非你自己写裸机的PE Loader,有这必要?没听说过C编写的什么什么(不知其术语)可以直接运行在裸机上,
引导是用汇编写的吧
TC编译的程序,都要靠DOS来加载运行哩小弟学识浅,请指正
cl.exe是编译器
jackyjkchen 只想说 你真恶心
补充一点就是最近为64位优化正在用VC 2008(9.0),顺便在32位测试了一下,在我的图像识别项目,32位图像处理VC6比VC9快8%,特征比较是VC9比VC6快1%,综合比较VC6胜。
CSDN里大款太多,整天泡在论坛里的人应该不是一般的富。为几万块钱我可是什么歪路都愿意走。
“没错,我自己用BIOS调用写的PE LOADER, 几百行汇编代码而已,省下200个硬盘+200 正版WINDOWS价值十几万人民币,没必要?
CSDN里大款太多,整天泡在论坛里的人应该不是一般的富。为几万块钱我可是什么歪路都愿意走。”
让我很有兴趣,敢问 Guilty 的工种 和 行业 ????和上面那一段话的实现方法从何入手!!!???
我就这么告诉LZ吧,VC用的编译器就叫做VC编译器……VC既是整个c++开发工具环境,也可以用来指代VC编译器,懂不……