1. ホーム
  2. performance

[解決済み] 実行時間(高速化)の計算方法

2022-02-01 07:56:54

質問事項

高速化の計算で行き詰まりました。そこで出された問題が


質問1

あるプログラムの50%が2倍、残りの50%が4倍に強化された場合、強化による全体の速度向上はどの程度か?ヒント 強化前(強化なし)のマシンにおけるプログラムの実行時間をTとする。そして、強化後の総実行時間T'を求めよ。高速化はT/T'である。


スピードアップ=強化前の実行時間/強化後の実行時間ということだけはわかった。ということで、答えは想定してよいでしょうか。

スピードアップ = T/((50/100x1/2) + (50/100x1/4))

強化後の総実行時間=T+スピードアップ

(50/100x1/2) なぜなら、50%は2倍、4倍も同じように強化されたからです。


質問2

あるプロセッサの設計を何らかの方法で改良・強化することにより、プログラムの(2/3)rdの実行を無限に高速化できると仮定してみよう。すると、改良されたプロセッサは、改良されていない(元の)マシンと比べて何倍速く走るだろうか?

100/(2/3)=150 なので、150倍速いと考えてよいでしょうか。

何かアイデアはありますか?よろしくお願いします。

解決方法は?

まず、質問1から。

合計時間は、2つのハーフの時間の合計である。

T = T1 + T2

次に T1 が2倍に増強されます。 T2 は4倍に改善されます。

T' = T1' + T2'
   = T1 / 2 + T2 / 4

の両方が存在することが分かっています。 T1T2 は50%です。 T . だから

T' = 0.5 * T / 2 + 0.5 * T / 4
   = 1/4 * T + 1/8 * T
   = 3/8 * T

高速化は

T / T' = T / (3/8 T) = 8/3

質問2も同様に解くことができます。

T' = T1' + T2'

T1' が0になる。 T2 は、残りの1/3が T .

T' = 1/3 T

高速化は

T / T' = 3

したがって、プログラムは以前の3倍(または2倍)速くなったことになります。