0910 C# WIN VS vc++ 性能PK

Robert C. Martin博客中文版 面向对象设计、模式、UML、敏捷方法学和极限编程领域
 三大编程语言的性能PK–Java, C/C++和Ruby

我懒得装JAVA了,以前的什么JB/ECLIPSE什么的好像被干掉了,
都是用的DEBUG
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
P:\\测试代码\\cctest\\ConsoleApplication1\\ConsoleApplication1\\bin\\Debug>ConsoleApplication1.exe
6140.625
P:\\测试代码\\testvc\\Debug>testvc
6.329

RELEASE:
P:\\测试代码\\testvc\\Release>testvc
6.123

P:\\测试代码\\cctest\\ConsoleApplication1\\ConsoleApplication1\\bin\\Release>ConsoleApplication1.exe
5765.625

呵呵,C#比C快!

代码:VC用的是人家的:
phoenixsh 发表于2006-08-31 11:27:00
VC/C++:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <Windows.h>

using namespace std;

double generate(int max) &leftsign;
unsigned int start, end;

bool *sieve = new bool[max];
//for (int i=0; i<max; i++) sieve[i] = true;
memset(sieve, 1, max*(sizeof(bool)));
sieve[0] = false;
sieve[1] = false;
double maxsqrt = sqrt((double)max);
start = GetTickCount();
for (int n=2; n<maxsqrt; n++) &leftsign;
if (sieve[n]) &leftsign;
for (int j=2*n; j<max; j+=n)
sieve[j] = false;
&rightsign;
&rightsign;

end = GetTickCount();

return (end – start)/1000.0;
&rightsign;

int main(int ac, char** av) &leftsign;
double time = 0.0;
for (int i=100000; i<=5000000; i+=100000) &leftsign;
time += generate(i);
&rightsign;
cout << time << endl;
&rightsign;

C#是改编JAVA的:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
&leftsign;
    class Program
    &leftsign;
        public static double generate(int max)
        &leftsign;
            Boolean[] sieve;
            sieve = new Boolean[max];
            for (int i = 0; i < max; i++)
                sieve[i] = true;
            sieve[0] = false;
            sieve[1] = false;
            int maxsqrt = (int)Math.Sqrt(max);
            DateTime start = DateTime.Now;
            for (int i = 2; i < maxsqrt; i++)
            &leftsign;
                if (sieve[i])
                &leftsign;
                    for (int j = 2 * i; j < max; j += i)
                    &leftsign;
                        sieve[j] = false;
                    &rightsign;
                &rightsign;
            &rightsign;
            TimeSpan c = DateTime.Now – start;

            return c.TotalMilliseconds;
        &rightsign;

        static void Main(string[] args)
        &leftsign;
            double time = 0;
            for (int i=100000; i<=5000000; i+=100000)
            &leftsign;
                time += generate(i);
            &rightsign;
            //System out.println(time);
            System.Console.WriteLine(time);
        &rightsign;
    &rightsign;
       
&rightsign;

原创文章,转载请注明: 转载自YippeeSoft开心软件

本文链接地址: 0910 C# WIN VS vc++ 性能PK

历史博文

标签:, ,