2007年8月21日星期二

Difference between Java versions. etc.

学校的课本介绍的是 1.3版本的 JDK,现在用的是 1.6版本的 JDK,发现一些区别(不知道是不是课本上写错了)。
// version 1.3
String str = new String("Java string");
str.concat("-test");
// str 现在的值是 Java string-test

// version 1.6
String str = new String("Java string");
str.concat("-test");
// str 现在的值是 Java string

在 BBS 上又发现了 Tie::File 模块,可以像操作 array 一样操作文件,真的很方便 :)

#! /usr/bin/perl
use warnings;
use strict;

{
    no strict; # Tie::File 需取消 strict
    use Tie::File;
    my @msc;
    tie @msc, Tie::File, ' MSC' or die $!;

    # ---- 删除以 = 开头的行 ----
    my $line_counter = 0;
    for (@msc) {
        if ( /^=/) { splice(@msc, $line_counter, 1) }
        $line_counter++;
    }

    untie @msc;
}

又发掘了 vim 的一项强大功能,文档查找。shift+k 可以在指定的文档中查找当前关键字,而且可以设定编辑不同类型的文件时查找不同的文档。 Cool
autocmd FileType perl set keywordprg=perldoc\ -f

2007年8月7日星期二

Big Prime number

HOHO~ 大数版本的 big_prime_judge ,使用了 Math::BigInt 模块。办公室的计算机 CPU 是 Celeron D 3G Hz ,计算超过 14 位的数就非常慢。文档中说使用  Math::BigInt::GMP 会快一些,但是我喜欢用标准库和纯 perl 的东西 ^^ ,何况如果需要计算更大的数值就要用 C++ 写了。

用 big_prime_judge 判断 100个 16位十进制数在 PIII 上耗时 9小时56分钟, 判断 100个 17位十进制数算了 20个小时,还没算出来的时候停电了 m( _ _ )m  下次没事的时候看看 java 的速度怎么样。

PIII 机器:
    Pentium III(Coppermine 864.793Hz   cache size: 256KB)
    RAM: 192 MB
    OS: Fedora Core 4 (kernel 2.6.11)


use Math::BigInt ;

sub big_prime_judge {
    my $n = $_[0];
    return 1 if ($n == 2);
    return 1 if ($n == 3);
    return 1 if ($n == 5);
    return 1 if ($n == 7);
    return 0 if ($n == 1);
    return 0 if ($n->copy->is_even());
    return 0 if ($n->copy->bmod(5) == 0 );
   
    my $factor = $n->copy->bsqrt() + 1;
    my $i = Math::BigInt->new(' 3');
    for (; $i<=$factor ; $i+=2)
    { return 0 if ($n->copy->bmod($i->copy()) == 0) }
    return 1;
}

2007年8月6日星期一

Perl Java

javascript 看着有点晕,把大学时候的 java 课本翻来出来,还是用 java 吧。还好,总算是学过的,语法用起来还挺轻松。通过两年前的 C++ 学习,我已经深得 OO 之精华 ^_^ 。

晚上把 java 书上的一个例子用 perl 写了一遍,竟然提示编译错误,上下看几遍才发现漏了几个 perl 的变量前缀。汗,看来头脑里已经出现语言混乱的情况了。

2007年8月2日星期四

IBM Power6

IBM 公布了 Power6 处理器详细的信息。IBM Power6 的频率高达 4.7GHz!而且是64位的双核心产品,速度远高过前辈Power5一倍左右,但是依然只损耗相同的电量。

IBM 利用先进的65nm制程技术打造出这颗Power6处理器,并由7.9亿晶体管所搭成,拥有8MB L2 Cache,为了能跟上处理器速度,还拥有300GB/s的频宽。

家里现在的计算机是 AMD 3800+ 64bit 双核,2GHz 主频,比起 Power6 来还差远了。HOHo 什么时候 PC 上的处理器能像 Power6 这么强劲就爽了,不过应该不用太长时间,也就是 1、2 年的事。

下面这幅图是 IBM 的工程师在检查 Power6 处理器