🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #393

Re: 教えてください ルーチンの高速化

#393
From: Takeshi Shigihara
Date: Thu, 30 Apr 1998 00:00
47 lines
2619 bytes
leo@mxb.meshnet.or.jp wrote:
> 
> 教えてください。
> 
> 以下のようなプログラムを高速化するにはどうしたらいいでしょうか?
> 
>         long            i,j,n,nn;
>         double  nrm,sigma;
>         double  cosTable[],x[],y[];
> 
>         for( j=1 ; j<n ; j++ )
>         {
>                 for(sigma=i=0 ; i<n ; i++)
>                     sigma += x[i] * cosTable[(( 2 * i + 1 ) * j)%nn] ;
>                 y[j] = nrm * sigma;
>         }
> 

(1)  処理そのものを見直す。
     →元の式にたちかえって、数式を変形するだけで処理が減らないかどうか、
       考えてみる。
(2)  FPUの高速なマシンならば、極力整数を利用しない。
     →整数演算より小数演算の方が速いマシンも存在する。そうしたマシンでは
       コサインのテーブルよりコサインそのものをFPUに計算させたほうが、
       かえって速いことさえある。整数←→小数の変換に手間取るマシンも存在
       する。
(2)' 小数演算を決して使わない。
     →FPUの付属していないマシンの場合、小数の演算もすべてソフトウェア
       でFPUの代わりに実現しているわけで、当然ながら大量の演算を必要と
       する。オーバーフローや有効桁数などに気を付けながら、たとえば1000倍
       の数値として全演算を行ってしまう。
(3)  アセンブラですべてを書き換える。
     →コンパイラよりも、ずっと上手にアセンブラを使える状況でない限り、
       逆に遅くなってしまうことさえある。
(4)  高速なマシンを利用する。
     →当然ながら、今より速くなる。

  他にも方法はあることでしょうが、まぁ、このくらいをあげておきます。

  小手先のテクニックなんぞより、(1) が、大きな効果を生むことでしょう。
すでに数式が極限まで簡略化されており、それでも高速化しなければならない
としたら、小手先のテクニックが有効となります。

----- Takeshi  Shigihara
      Office   cygnus@masternet.or.jp
      Home     cygnus@po.jah.ne.jp -----
Technical Details
Message-ID: <3547EB83.F35FD43E@masternet.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <35467E52.545A@mxb.meshnet.or.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,5daf7c1d07ca6629
X-Google-Attributes: gid106434,public
From: Takeshi Shigihara <cygnus@masternet.or.jp>
Subject: Re: 教えてください ルーチンの高速化
Date: 1998/04/30
Message-ID: <3547EB83.F35FD43E@masternet.or.jp>
X-Deja-AN: 348947774
Content-Transfer-Encoding: 7bit
References: <35467E52.545A@mxb.meshnet.or.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
X-Complaints-To: ap-net@asahi-net.or.jp
X-Trace: skytrain.asahi-net.or.jp 893906087 24412 (None) 202.224.45.147
Organization: MasterNet
Newsgroups: fj.lang.c