NoInfoNoFear 发表于 2006-2-21 10:15:20

说说我的想法,大家平价一下对不对:

运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。

因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。

sunperz 发表于 2006-2-25 13:52:19

我在windows 的VC6.0编译,运行花了30s (同时还开了BT下载……)

cattail 发表于 2006-2-27 11:40:18

我在同一台机器上用不同的编译器编译了楼主的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的执行效率是在不怎么样咯。。。

woolzey 发表于 2006-3-17 09:39:26

gcc4的RAND_MAX是7fffffff,vc6的应该是7fff
也就是说一次rand(),gcc产生31位随机数,而vc6产生15位随机数,所以gcc的效率和vc实际上是差不多了。

zqsmdd 发表于 2006-11-6 10:07:04

请教gnap

我想引用你的文章内容,请问引用说明就如何写

snnn 发表于 2006-11-9 11:16:44

第一,你没有加优化.
第二,有大量的浮点运算.Linux/FreeBSD/Windows对于浮点异常的处理方式是各不相同的.这是浮点计算效率差别的主要来源.

snnn 发表于 2006-11-9 11:17:44

说说我的想法,大家平价一下对不对:

运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。

因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。

Linux至今对thread没有什么支持.
而Windows 此方面已经做的很完善了.

bluesky000 发表于 2006-11-9 22:43:14

说说我的想法,大家平价一下对不对:

运行单个任务,Linux并不比Windows更快。
同时运行多个任务,任务越多,Linux性能较windows越好。

因为不管你运行多少东西,Linux进程调度的代价差别不太多,
但是Windows就不一样了,可能对单任务进行了优化,而放弃多任务的性能。

Linux至今对thread没有什么支持.
而Windows 此方面已经做的很完善了.

LINUX下进程使用了写时复制的方式,使其创建新进程的开销很少,因此很长时间以来LINUX下都没有线程。而WINDOWS下创建新进程的开销很大,因此才不得不提供了线程的功能。

wsgtrsys 发表于 2006-11-14 18:49:10

我在vc6中.用vc6自己的编译器,只要26S.vc调用intel 9.1的编译器,结果要107秒

is03wush 发表于 2006-11-16 22:08:08

会不会是微软有一部分API没有公开,只是给自己用
页: 1 2 3 [4]
查看完整版本: 同样的程序在Linux和Windows下速度差别如此之大?