HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0714
@key負荷8解決


@key

リンク

2012/7/14(Sat) 18:59:23|NO.47680

a=0
if b=1 : a=2

a=(b=1)*2

どっちのほうが軽いですか?
変な質問ですいません



この記事に返信する


spider

リンク

2012/7/14(Sat) 19:30:23|NO.47681

前者です。
ちなみに、if b :a = 2 のほうが速い。
フラグチェックにこのやり方を使う。

変数だけを条件文に入れると0以外の時
真となる。



てれてれ

リンク

2012/7/14(Sat) 20:51:12|NO.47686

少なくとも私の環境では、後者の方が高速でした。

#include "winmm.as" repeat 3 : f = cnt timeGetTime t1 = stat repeat 1000000 b = cnt\2 //bは0と1とを交互に。 if f = 0{ //パターン[1] a=0 if b=1 : a=2 } if f = 1{ //パターン[2] a=(b=1)*2 } if f = 2{ //パターン[3] if b :a = 2 } await 0 loop timeGetTime t2 = stat mes "パターン["+(f+1)+"] "+(t2-t1)+"ms loop



暇人

リンク

2012/7/14(Sat) 21:14:41|NO.47687

NO.47681のはa=0も必要条件なのを見落としてたんだろう

#include "winmm.as" wait 10 repeat 3 : f = cnt timeGetTime t1 = stat if f = 0{ //パターン[1] repeat 1000000 b = cnt\2 a=0 if b=1 : a=2 loop } if f = 1{ //パターン[2] repeat 1000000 b = cnt\2 a=(b=1)*2 loop } if f = 2{ //パターン[3] repeat 1000000 b = cnt\2 if b {a = 2}else{a = 0} loop } timeGetTime t2 = stat mes "パターン["+(f+1)+"] "+(t2-t1)+"ms wait 10 loop
で実際は if b {a = 2}else{a = 0} が一番処理は軽くなる
単純にbの内容に関係なく比較1回代入1回で済むからだが・・・



匿名

リンク

2012/7/17(Tue) 02:05:44|NO.47746

プログラムの実行速度の話だったんじゃないのか . . .
いつからスクリプトが人からどう見られるかの話になったんだ . . .

んで、私の環境でも後者の方が早かったです



check

リンク

2012/7/17(Tue) 11:11:54|NO.47749

まあでも正直
>a=(b=1)*2
はわかりづらいな。
a=(b==1)*2とした上で、
(HSPでは=と==は同じものとして処理されるが、代入でないことを示すのにはこちらのほうがわかりやすい。)
横にコメントでも添えておけば自分でも間違えることはないだろう。

で、本題だが俺も後者のほうが速かった、以上。



KA

リンク

2012/7/17(Tue) 13:26:05|NO.47750

最初の a=0 の扱いで変わる。

両方有れば前者。
上だけ有れば後者。



匿名

リンク

2012/7/17(Tue) 14:52:02|NO.47751

後者はa=0がなくても
a=0
a=2
a=0
a=2
.
.
.
となることから、
a=0は前者のみ必要ってことでいいんじゃないですかね
よって後者の方が早い



ヂオン

リンク

2012/7/18(Wed) 00:39:58|NO.47754

後者の方が早いと思います。

実行ファイル化後のサイズと、実行速度の変化を照らし合わせると、やはり、個人的には
a=(b==1)*2 型を多く使用します。



ONION software Copyright 1997-2023(c) All rights reserved.