POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: xing83
打印 上一主题 下一主题

现在cpu的速度真恐怖

[复制链接]
21#
发表于 2007-7-2 10:47 | 只看该作者
还有抱怨快的…………
回复 支持 反对

使用道具 举报

22#
发表于 2007-7-2 11:03 | 只看该作者
楼主编程的??
回复 支持 反对

使用道具 举报

23#
发表于 2007-7-2 11:15 | 只看该作者
:wacko: 帖出来的也不是冒泡排序啊。。。
回复 支持 反对

使用道具 举报

24#
 楼主| 发表于 2007-7-2 11:16 | 只看该作者
如果是 专业的编程,水平怎么会有我这么菜
回复 支持 反对

使用道具 举报

25#
发表于 2007-7-2 11:17 | 只看该作者

回复 #24 cinlo 的帖子

对,根本不运行,或者只运行一小部分。
回复 支持 反对

使用道具 举报

26#
发表于 2007-7-2 11:33 | 只看该作者
近来晕一下
闪人~~
回复 支持 反对

使用道具 举报

27#
发表于 2007-7-2 11:45 | 只看该作者
原帖由 Tanknet 于 2007-7-2 10:18 发表
MS .NET的编译器有一种机制你知道吗?
它辨认出不影响运行结果的东西根本不写进MSIL代码。

比如
Function foo() as Int32
    dim a as integer =2, b as integer=3
    For a=0 To 10000
        b=b ...


最后foo=常数 自然是直接返回拉。
Sub的话还是会循环的
回复 支持 反对

使用道具 举报

28#
发表于 2007-7-2 11:51 | 只看该作者
a,b你也没叫它返回,它当然不会输出啦。但是运行还是要的。

你让中间的过程再复杂一点,看看输出结果的时间是不是一样?
回复 支持 反对

使用道具 举报

29#
发表于 2007-7-2 11:52 | 只看该作者
原帖由 Tanknet 于 2007-7-2 10:18 发表
MS .NET的编译器有一种机制你知道吗?
它辨认出不影响运行结果的东西根本不写进MSIL代码。

比如
Function foo() as Int32
    dim a as integer =2, b as integer=3
    For a=0 To 10000
        b=b ...

a,b你也没叫它返回,它当然不会输出啦。但是运行还是要的。

你让中间的过程再复杂一点,看看输出结果的时间是不是一样?
回复 支持 反对

使用道具 举报

zxjike 该用户已被删除
30#
发表于 2007-7-2 12:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

zxjike 该用户已被删除
31#
发表于 2007-7-2 12:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

zxjike 该用户已被删除
32#
发表于 2007-7-2 12:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

33#
发表于 2007-7-2 15:18 | 只看该作者
原帖由 zxjike 于 2007-7-2 12:29 发表

和返不返回无关,只有Debug模式才运行,生成EXE或者Release模式循环就不跑了。

有许多刚学编程的,都喜欢像这样用一些无意义的循环来做延时。

你的意思是编译器会篡改编写者的意图,略过一些编写者有意使用的空循环?
回复 支持 反对

使用道具 举报

34#
发表于 2007-7-2 15:40 | 只看该作者
多数编译器都是这么干的,
这个程序你只要最后输出这几十万个数,他就不会忽略了,
然后这个程序就怎么也跑不玩了。
9千万亿=9百万 G,大概要多少时间可以很容易的估计处来了。

原帖由 FENG950 于 2007-7-2 15:18 发表

有许多刚学编程的,都喜欢像这样用一些无意义的循环来做延时。

你的意思是编译器会篡改编写者的意图,略过一些编写者有意使用的空循环?
回复 支持 反对

使用道具 举报

35#
发表于 2007-7-2 15:44 | 只看该作者
原帖由 bessel 于 2007-7-2 15:40 发表
多数编译器都是这么干的,
这个程序你只要最后输出这几十万个数,他就不会忽略了,
然后这个程序就怎么也跑不玩了。
9千万亿=9百万 G,大概要多少时间可以很容易的估计处来了。

我所知道没有什么编译器会这样篡改编写者的意图,其实这种事试一下就知道了,VS2003下编译,release模式

using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Test
{
  public static void Main(string[] args)
  {
   Test test = new Test();
   Console.WriteLine(test.xun());
   Console.ReadLine();
  }
  public int xun()
  {
   int a = 0;
   int b = 9;
   for(long i = 0;i < 1000000000;i++)
   {
    a++;
   }
   return b;
  }
}
}

试试看有无延时?
回复 支持 反对

使用道具 举报

36#
发表于 2007-7-2 15:51 | 只看该作者
lz试试:
for (i=1;i<100000;i++){v/u7Y"B
v
回复 支持 反对

使用道具 举报

lxjlan 该用户已被删除
37#
发表于 2007-7-2 15:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

38#
发表于 2007-7-2 16:44 | 只看该作者
俺以前用那个visual fortran的时候遇到过这样的情况,当时另一个编译器也是这样,不过ifort还好。

楼主的问题如果只排一次序的话要大概几分钟,10w次很快算完一定是有偷工减料的地方。


原帖由 FENG950 于 2007-7-2 15:44 发表

我所知道没有什么编译器会这样篡改编写者的意图,其实这种事试一下就知道了,VS2003下编译,release模式

using System;
namespace ConsoleApplication1
{
///
/// Class1 的摘要说明。
///
cl ...
回复 支持 反对

使用道具 举报

39#
发表于 2007-7-2 16:57 | 只看该作者
原帖由 bessel 于 2007-7-2 16:44 发表
俺以前用那个visual fortran的时候遇到过这样的情况,当时另一个编译器也是这样,不过ifort还好。

楼主的问题如果只排一次序的话要大概几分钟,10w次很快算完一定是有偷工减料的地方。

LZ的源码也没看见,不能说是编译器偷工减料吧?编译器偷工减料就是很严重的问题了。或许是他的算法捏?

前面有人说.net的编译忽略部分代码,我估计他们是不是搞成JIT部分了?JIT是有可能运行中没用到的代码是不编成本机码的(不过这里讨论的也算不上“用不到的代码”),但是源码编成IL或是字节码的过程不会。

[ 本帖最后由 FENG950 于 2007-7-2 18:44 编辑 ]
回复 支持 反对

使用道具 举报

40#
发表于 2007-7-2 18:16 | 只看该作者
对于无用代码的清除也是优化的一种。
有的时候编译器太聪明了。
原帖由 FENG950 于 2007-7-2 16:57 发表

LZ的源码也没看见,不能说是编译器偷工减料吧?编译器偷工减料就是很严重的问题了。或许是他的算法捏?

前面有人说.net的编译忽略部分代码,我估计他们是不是搞成JIT部分了?JIT是有可能运行中没用到的代码 ...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-8-3 02:34

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表