看看java和C#的一个亿次空循环

abc优希 2012-08-16 05:35:14
C#代码:
-------------------------------------
int st = Environment.TickCount;
for (int i = 0; i < 100000000; i++)
{

}
Console.WriteLine(Environment.TickCount - st);
-------------------------------------
我电脑结果:484

java代码:
-------------------------------------
long st=Calendar.getInstance().getTimeInMillis();
for (int i = 0; i < 100000000; i++) {

}
System.out.println(Calendar.getInstance().getTimeInMillis()-st);
-------------------------------------
我电脑结果:78

是不是说明java执行代码效率高呢?
...全文
611 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
猴头 2012-08-17
  • 打赏
  • 举报
回复
这么无聊,要比较效率和速度,干脆都用汇编去吧。

没意思。
showjim 2012-08-17
  • 打赏
  • 举报
回复
楼主说说自己的问题吧,你是怎么读文件,怎么加密,后续怎么处理的?
如9#所说,在相同的编译器优化策略下,release模式这种空循环的效率不低于C。
所以楼主不要把Debug模式的结果当成C#的效率,除非楼主想要比谁慢。
bigbaldy 2012-08-17
  • 打赏
  • 举报
回复
java刚试完,和C#速度一模一样
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

貌似一个是毫秒,一个是tick,单位不一样
1毫秒=10000ticks
[/Quote]
觉得有问题,先查查才对啊
http://msdn.microsoft.com/zh-cn/library/system.environment.tickcount.aspx
是毫秒没错的
yvesliao 2012-08-16
  • 打赏
  • 举报
回复
貌似一个是毫秒,一个是tick,单位不一样
1毫秒=10000ticks
bigbaldy 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 6 楼 的回复:
楼主你不知道按F5运行和直接双击性能差距很大吗?
我的测试结果C#是:36

CPU是E5500,系统Win7-32bit


很想知道您电脑上执行java代码是多少。再有,电脑好的,可以把循环改成10亿次比较。
“C#的性能在java之上,这个是不争的事实了”我不是在比较性能,只是想找到一下问题解决办法。
现在有个工作:需要读取一个txt文件中每一行……
[/Quote]
没装java,明天去单位我试试
  • 打赏
  • 举报
回复
要是数据量很大,不如多开几个线程,每个线程分工m-n条记录。
mizuho_2006 2012-08-16
  • 打赏
  • 举报
回复
我2L的回复怎么看不到了
abc优希 2012-08-16
  • 打赏
  • 举报
回复
To:iyomumx
"用内存映射文件并且使用多线程读取要好得多。"
我想用同样的方法java也会比C#快,有时间我比较下。
abc优希 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
楼主你不知道按F5运行和直接双击性能差距很大吗?
我的测试结果C#是:36

CPU是E5500,系统Win7-32bit
[/Quote]

很想知道您电脑上执行java代码是多少。再有,电脑好的,可以把循环改成10亿次比较。
“C#的性能在java之上,这个是不争的事实了”我不是在比较性能,只是想找到一下问题解决办法。
现在有个工作:需要读取一个txt文件中每一行的字符串加密再保存到另一个txt。txt中有上亿条记录。
用这样的循环读取处理,C#每次完成需要的时间久,被迫选择了java去做。
bigbaldy 2012-08-16
  • 打赏
  • 举报
回复
如果比较基本循环和4则运算的话,C#的性能和C是一模一样的,不信你自己测。

还有,这种循环有可能会在编译时优化掉,尤其是C,你测试的时候最好用IDA看下,C#的性能在java之上,这个是不争的事实了,网上各类测试太多了,你自己找吧
newtee 2012-08-16
  • 打赏
  • 举报
回复
必须不一样啊 根本就是不一样的东西 拿来比有意思吗?
那你怎么不拿汇编和JAVA比
iyomumx 2012-08-16
  • 打赏
  • 举报
回复
所谓无聊是指这种:

D:\tests>csc /debug- /optimize test3.cs
Microsoft(R) Visual C# 2010 编译器 4.0.30319.1 版
版权所有(C) Microsoft Corporation。保留所有权利。


D:\tests>test3
0

D:\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里有上亿条数据本身就很奇怪。就算要读取,用内存映射文件并且使用多线程读取要好得多。
bigbaldy 2012-08-16
  • 打赏
  • 举报
回复
楼主你不知道按F5运行和直接双击性能差距很大吗?
我的测试结果C#是:36

CPU是E5500,系统Win7-32bit
abc优希 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
拿这种无聊的代码来比较真是浪费人参
[/Quote]

一个案例:
需要读取一个txt文件中每一行的字符串加密再保存到另一个txt。txt中有上亿条记录。
用这样的循环读取处理,java每次完成需要10分钟以上,C#每次完成就更漫长了。
请问,是不是要考虑效率??
或者我得思路不对。
iyomumx 2012-08-16
  • 打赏
  • 举报
回复
拿这种无聊的代码来比较真是浪费人参
isjoe 2012-08-16
  • 打赏
  • 举报
回复
C#代码是375 我电脑很一般的。

java不会
mizuho_2006 2012-08-16
  • 打赏
  • 举报
回复
用System.Diagnostics.Stopwatch 测试一下试试

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧