[#697] ++[Re: dylan [Re: swap values(Re: call by reference)]] —
けいじゅ@SHLジャパンです.
1 message
1996/10/01
[#869] Append Member — Kouki Higuchi <luke@...>
Please let me be a participate.
1 message
1996/10/20
[#895] sleep eternaly on BOW(Re: ruby 0.99.2-961023 available) — Shin-ichiro Hara <sinara@...>
原です。
6 messages
1996/10/24
[#906] [REQ]Get Strings!<3> GETS, SUB — Shin-ichiro Hara <sinara@...>
原です。
5 messages
1996/10/27
[#907] [REQ]Get Strings!<4> SPLIT — Shin-ichiro Hara <sinara@...>
原です。
6 messages
1996/10/27
[#920] bug report(each) — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
8 messages
1996/10/29
[#928] Re: hajimemashite — Itsuro Saito <saito@...>
斎藤@東大電子情報です.
9 messages
1996/10/29
[#938] ruby 0.99.3-961030 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
7 messages
1996/10/30
[#954] Rational — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
23 messages
1996/10/30
[#955] Re: Rational
— matz@... (Yukihiro Matsumoto)
1996/10/30
まつもと ゆきひろです.
[#968] Re: Rational
—
1996/10/31
けいじゅ@SHLジャパンです.
[#970] Re: Rational
— matz@... (Yukihiro Matsumoto)
1996/10/31
まつもと ゆきひろです.
[#956] Re: Rational[coerce(Re: ruby 0.99.3-961030 available) ] — Shin-ichiro Hara <sinara@...>
原です。
4 messages
1996/10/30
[#965] ruby-mode — Yasuo OHBA <jammy@...>
大庭@SHLJapanです.
6 messages
1996/10/31
[ruby-list:880] Bug report and Request
From:
keiju@... (Keiju ISHITSUKA)
Date:
1996-10-22 06:27:07 UTC
List:
ruby-list #880
けいじゅ@SHLジャパンです.
昔話題になった Sortorを作っていて幾つかバグと変なのを見つけました. あ
と, リクエストが少しあります.
[1] print 10000000000000000000000 - 10000000000000000000001
やってみればわかります. 変な結果が出ます. Bignumの引き算で結果がマイナ
スになる時におかしくなるようです.
[2]
$stdout.sync = TRUE
print a = Float(982273762)
print b = Float(1184838904)
print a/b
--
9.82274e+08 1.62161e-308 Floating exception
bの結果が明らかにおかしいですね. あとちょっと気になるのが, Floating
exceptionは発生するものと考えて良いのかしら??
[3]
B array[bignum]
これは意地悪なのですが, indexにbignumが使えません. いまのrubyの配列の
実装では a[bignum] = foo は, メモリアロケーションの関係で無理だと思い
まのでいいのかな...
ただ, もうちょっとましなエラーを出した方が...
[4] array[RANGE or idx, len] = array(size)
クイックソートの最適化のために, 挿入ソートを作っていておかしい現象を発
見しました.
以下のプログラムを見て下さい:
$stdout.sync = TRUE
def utime
t = Time.new
t.tv_sec * 1000000 + t.tv_usec
end
1000.times do
|time|
size = 2**time
printf "Time: %d Size: %d ", time, size
# a = Array.new(size)
# b = Array.new(size)
a = Array.new
b = Array.new
0.upto(size - 1) do
|i|
a[i] = rand(size)
b[i] = rand(size)
end
t1 = utime
a[0..[a.size - 1, 30].min] = b[0..[a.size - 1, 30].min]
t2 = utime
0.upto([size - 1, 30].min) do
|i|
a[i] = b[i]
end
t3 = utime
printf "%d, %d, %d\n", t2 - t1, t3 - t2, t3 - t2 - (t2 - t1)
end
上記プログラムのメインの処理は以下のように配列のコピー操作を行なうとこ
ろです. 大きな配列の一部分に上書き(サイズ30)を行なっています.
(1)
a[0..[a.size - 1, 30].min] = b[0..[a.size - 1, 30].min]
(2)
0.upto([size - 1, 30].min) do
|i|
a[i] = b[i]
end
(2)の処理は, aのサイズに関係なく一定なのですが, (1)の処理は段々遅くなっ
ていき, size == 32768で処理速度が逆転してしまいます.
たぶん
array1[index, len] = array2
の処理で, array2の長さが lenと同じ場合の処理に特別な対応をとっていない
せいだと思うのですが, もうちょっと工夫していただけないでしょうか?
[5] Array.new(size)
[4]プログラムで コメントになっているところを置き換えて実行してみて下さ
い. 落ちます!!
# そういえば, メッセージが変わりましたね. 良くわかるようになりました.
# (^^;;;
[6] Time
これはリクエストです.
Time.tv_secの様に絶対秒数(を計るメソッドはあるのですが, 絶対マイクロ秒
を計るメソッドが用意してありません. ベンチマークとかする時には良く使う
ので, 用意してもらえませんか?
あと, Timeには, tm構造体から月(tm_mon)を取り出すメソッドがないのですが...
なんか理由があるのですか?
最後に, 時間の加減算をサポートして下さい.
__
.........................................石塚 圭樹@SHLジャパン(株)...
------------>アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----