运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。
因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。 我在windows 的VC6.0编译,运行花了30s (同时还开了BT下载……) 我在同一台机器上用不同的编译器编译了楼主的PI程序,输入值为500000000时,运行情况(时间单位:秒)
如下表:
编译环境 默认选项编译速度优化选项 操作系统 备注
运行时间 编译运行时间
Dev-C++ 68 61 Windows2000 它是用gcc做编译器的
BC5.5 29 29 Windows2000 Borland的免费编译器
TC3.0 78 77 DOS7.0 Borland 92年的产品,16位
TC2.0 108 108 DOS7.0 Borland 88年的产品,16位
GCC 100 80 红旗Linux 5.0 核心版本是2.6.9
GCC编译出来的代码速度实在令人失望,居然只能跟TC系列勉强打个平手。不过GCC的速度优化确实还有点用。
还有个有意思的地方:同样是用GCC编译出来的代码,在Windows2000下和Linux下运行时间居然差了有50%!我猜这可能是Linux的核心进程占用了更多的CPU时间,分给用户进程的CPU时间就少了。这么以降低用户进程性能来换取系统的稳定到底值不值得?
那这样说来GCC的执行效率是在不怎么样咯。。。 gcc4的RAND_MAX是7fffffff,vc6的应该是7fff
也就是说一次rand(),gcc产生31位随机数,而vc6产生15位随机数,所以gcc的效率和vc实际上是差不多了。
请教gnap
我想引用你的文章内容,请问引用说明就如何写 第一,你没有加优化.第二,有大量的浮点运算.Linux/FreeBSD/Windows对于浮点异常的处理方式是各不相同的.这是浮点计算效率差别的主要来源. 说说我的想法,大家平价一下对不对:
运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。
因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。
Linux至今对thread没有什么支持.
而Windows 此方面已经做的很完善了. 说说我的想法,大家平价一下对不对:
运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。
因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。
Linux至今对thread没有什么支持.
而Windows 此方面已经做的很完善了.
LINUX下进程使用了写时复制的方式,使其创建新进程的开销很少,因此很长时间以来LINUX下都没有线程。而WINDOWS下创建新进程的开销很大,因此才不得不提供了线程的功能。 我在vc6中.用vc6自己的编译器,只要26S.vc调用intel 9.1的编译器,结果要107秒 会不会是微软有一部分API没有公开,只是给自己用