HSP - Hot Soup Processor [13]

このエントリーをはてなブックマークに追加
543名前は開発中のものです。
>>541 なんか誤解してそうな感じがするんで、念のため…。
#defineとかのマクロは、文字列を置換してるだけだから、マクロ自体では実行速度は変化しない。

マクロが遅いんではなくて、
HSPでは switch〜case文 をマクロで実装してて、switch文をコンパイルすると
無駄な条件判断やジャンプを含んだ記述に置換されるので、実行速度が遅くなる─という話。
;------------
switch a
case 1
処理1
swbreak

case 2
処理2
swbreak
swend
;------------
は、以下のように展開される。

;------------
_switch_val= a: if@hsp 0 {
_switch_sw++} if@hsp _switch_val == ( 1) | _switch_sw { _switch_sw = 0
処理1
goto@hsp *_switch_0000

_switch_sw++} if@hsp _switch_val == ( 2) | _switch_sw { _switch_sw = 0
処理2
goto@hsp *_switch_0000
} *_switch_0000
;------------
結局やらされるあたり、某猿の手口が想い起こされるな。