C#代码:
-------------------------------------
int st = Environment.TickCount;
for (int i = 0; i < 100000000; i++)
{
}
Console.WriteLine(Environment.TickCount - st);
-------------------------------------
我电脑结果:484java代码:
-------------------------------------
long st=Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < 100000000; i++) {}
System.out.println(Calendar.getInstance().getTimeInMillis()-st);
-------------------------------------
我电脑结果:78是不是说明java执行代码效率高呢?
-------------------------------------
int st = Environment.TickCount;
for (int i = 0; i < 100000000; i++)
{
}
Console.WriteLine(Environment.TickCount - st);
-------------------------------------
我电脑结果:484java代码:
-------------------------------------
long st=Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < 100000000; i++) {}
System.out.println(Calendar.getInstance().getTimeInMillis()-st);
-------------------------------------
我电脑结果:78是不是说明java执行代码效率高呢?
一个案例:
需要读取一个txt文件中每一行的字符串加密再保存到另一个txt。txt中有上亿条记录。
用这样的循环读取处理,java每次完成需要10分钟以上,C#每次完成就更漫长了。
请问,是不是要考虑效率??
或者我得思路不对。
我的测试结果C#是:36CPU是E5500,系统Win7-32bit
Microsoft(R) Visual C# 2010 编译器 4.0.30319.1 版
版权所有(C) Microsoft Corporation。保留所有权利。
D:\tests>test3
0D:\tests>type test3.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;class Program
{
static void Main(string[] args)
{
int st = Environment.TickCount;
for (int i = 0; i < 100000000; i++){}
Console.WriteLine(Environment.TickCount - st);
}
}txt里有上亿条数据本身就很奇怪。就算要读取,用内存映射文件并且使用多线程读取要好得多。
那你怎么不拿汇编和JAVA比
很想知道您电脑上执行java代码是多少。再有,电脑好的,可以把循环改成10亿次比较。
“C#的性能在java之上,这个是不争的事实了”我不是在比较性能,只是想找到一下问题解决办法。
现在有个工作:需要读取一个txt文件中每一行的字符串加密再保存到另一个txt。txt中有上亿条记录。
用这样的循环读取处理,C#每次完成需要的时间久,被迫选择了java去做。
"用内存映射文件并且使用多线程读取要好得多。"
我想用同样的方法java也会比C#快,有时间我比较下。
1毫秒=10000ticks
http://msdn.microsoft.com/zh-cn/library/system.environment.tickcount.aspx
是毫秒没错的
如9#所说,在相同的编译器优化策略下,release模式这种空循环的效率不低于C。
所以楼主不要把Debug模式的结果当成C#的效率,除非楼主想要比谁慢。