Hello World——C家族速度比拼

Windforce 发表于 2008-03-19 16:57:24

C#目前是微软.NET平台首推的应用程序开发语言,C#数据库速度较快不能说明C#本身性能好,因为他们通过外部调用实现,时间集中在外部调用上,就如同
for(int i=0;i<100;i++)
{
//外部调用1秒钟
}
C#用125秒,C++用100秒,怎么能用慢了25%来衡量?C#速度的测试结果和Java相当,实际上Java和C#都比C++慢了5~20倍(要考 虑处理不同的数据性能不同,比如整型、浮点型、字符串,要考虑在堆中分配内存造成的速度降低,要考虑后台释放内存的开销,还要考虑其他因素,比如 Java/C#中字符串相加和C++中strcpy的巨大效率差异)。

另外,开发效率也是首先需要考虑的,这方面,c#比c++好。
至于,你选择哪种开发工具并不是本文要讨论的,具体应用不同,平台不同,开发工具自然不同。

下面开始介绍最简单的测试.

硬件环境:Dell Inspiron 3800 G700GT 笔记本电脑 CPU/PIII/700,ROM/128MB,HD/12GB。
软件环境:Windows 2000 + SP2,.NET平台 + Visual Studio.NET,Office XP。
所有的测试均是在命令行状态下以RELEASE模式编译程序,而非Visual Studio IDE集成开发环境,并在命令行状态下执行程序。没有对编译过程进行任何优化。

Hello World
    Hello World测试程序主要是评测加载一个程序及其运行时环境所用的时间。C++的程序运行需要C运行库,从所周知,这个库是相当轻量级的。而C#程序的运行必须要加载.NET框架,从目前的情况看,这个框架无庸置疑不是一个轻量级的。
Hello World程序的C++代码如下:     代码一:helloworld.cpp
    #include
    int main(int argc, char *argv[])
    {
        std::cout << "Hello World" << std::endl;
        return 0;
    };  
Hello World程序的C#代码如下:     代码二:helloworld2.cs
    using System;
    namespace HelloWorld
    {
    class Class1
    {
        static void Main(string[] args)
        {
          Console.WriteLine("Hello World");
        }
      }
    }      
    从这个测试的结果中,我们可以看到程序在相应环境中的加载时间。对于一个只完成简单任务的程序来说,无疑我们需要它能快速加载和退出。Perl脚 本是个有代表性的例子,运行这种需要大量的加载时间,从而导致其不能满足基于CGI且面向性能的Web站点的需要。这时,人们常常选择C++程序替 Perl脚本。但对于需要长时间处于激活状态的程序,其加载时间相对运行时性能来说就显得并不是那么很重要了。下表是十次测试的结果:
表一:Hello World 测试结果
序号            C++(~毫秒)  C#(~毫秒)
1                    40                     1221
2                    20                     121
3                    10                     130
4                    10                     100
5                    10                     110
6                    10                     130
7                    10                     120
8                    10                     140
9                    10                     150
10                  20                     140
平均值          15                      235

    测试结果的精确程度由GetTickCount函数的精度决定。其精度大概在百分之一秒。从结果我们可以得出这样的结论。第一,冷启动.NET应 用过程所花费的时间比运行相同的应用多出一秒的时间。第二,启动后的程序再运行时,在C++代码大约是C#代码运行时间开销的十分之一。一般这种差别可以 忽略不计。


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定