本站网址: YippeeSoft开心软件
本文链接: 0910 C# WIN VS vc++ 性能PK
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
历史博文
- Android模擬器 - 2010
- 20080707 firefox 配置文件 - 2009
- 20070611 .NET Framework Developer's Guide how to - 2008
- 0111 VS2005 发布 ClickOnce 测试 - 2006
- TestFixture Test TestDriven 测试驱动 - 2005
- 软件开发误区之四-开发语言工具之争 - 2005
评论