[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

[ruby-dev:11366] Re: [PATCH] an analogue of `long long'

From: EGUCHI Osamu <eguchi@...>
Date: 2000-11-02 04:29:27 UTC
List: ruby-dev #11366
えぐち@エスアンドイー です。

>>> In message [ruby-dev:11365] Re: [PATCH] an analogue of `long long'
    On Thu, 2 Nov 2000 13:08:01 +0900, matz@zetabits.com (Yukihiro Matsumoto) said:

> まつもと ゆきひろです
> 
> In message "[ruby-dev:11364] Re: [PATCH] an analogue of `long long'"
>     on 00/11/02, EGUCHI Osamu <eguchi@shizuokanet.ne.jp> writes:
> |
> |私も、以前同様の試みをしましたが、
> |32bit の処理系では long long がサポートされれていても、
> |サポート関数(gcc では __umoddi3 など)のコールに
> |多くの時間が費され、乗算除算はかなり速度が低下しました。
> |#反対に、加減算は long long の使用で速度向上が見られます。
> 
> そうなんですか? 私のマシン(i596-linux)ではlong long化で乗算・
> 除算主体の演算が倍程度速くなりました。gccの性能でしょうか。
> 64bitのalphaでは同じ演算が実に6倍になったという。
> 
> なにが違うんでしょうねえ。

なるほど、こちらでも先程のスクリプトが

  ruby 1.6.2 (2000-11-01) [i386-freebsdelf4.1.1]
    ⇒	% time ./ruby -v /tmp/bnt.rb > /dev/null
	0.428u 0.009s 0:00.43 97.6%     532+1434k 0+0io 0pf+0w

  ruby 1.6.2 (2000-10-18) [i386-freebsd4.1.1]
    ⇒  % time ruby  -v /tmp/bnt.rb > /dev/null
	0.647u 0.019s 0:00.66 98.4%     4+1172k 0+0io 0pf+0w

でした。

私が試したスクリプトは、標準配布の sample/pi.rb の
外周のプールを 6000 周で終らせた場合の速度の測定です。

これですと、

  ruby 1.6.2 (2000-11-01) [i386-freebsdelf4.1.1]
    ⇒	% time ./ruby ~/work/pi.rb > /dev/null
	29.202u 0.287s 0:29.74 99.1%    511+11441k 0+0io 0pf+0w


  ruby 1.6.2 (2000-10-18) [i386-freebsd4.1.1]
    ⇒	% time ruby ~/work/pi.rb > /dev/null
	26.229u 0.367s 0:26.85 98.9%    4+10869k 0+0io 0pf+0w

と若干、long long 使用版が若干遅く、プロファイルを取ると、
乗除算関係のコンパイラのランタイムが2位と3位でした。

	えぐち

#!/usr/local/bin/ruby

k, a, b, a1, b1 = 2, 4, 1, 12, 4

1.upto(6000) do
  # Next approximation
  p, q, k = k*k, 2*k+1, k+1
  a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
  # Print common digits
  d = a / b
  d1 = a1 / b1
  while d == d1
    print d
    $stdout.flush
    a, a1 = 10*(a%b), 10*(a1%b1)
    d, d1 = a/b, a1/b1
  end
end
puts

In This Thread