トップページ > プログラム > 2019年08月20日 > lOKfo+mN

書き込み順位&時間帯一覧

4 位/149 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000012110001107



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part144
将来性ないプログラミング言語。Delphi含まれず安心

書き込みレス一覧

C++相談室 part144
570 :デフォルトの名無しさん[sage]:2019/08/20(火) 14:48:01.70 ID:lOKfo+mN
最近の環境では「実測」の信頼性確保も、また難しいです。
なぜかある時には何度測定しても遅いのに、あらためて別の時に
測ると速く出る事があったりします。
C++相談室 part144
576 :デフォルトの名無しさん[sage]:2019/08/20(火) 15:29:52.16 ID:lOKfo+mN
>>575
最適化はどちらも同じオプションでしてますし、出力されたアセンブリ・コード
も見て、テーブルを使った方が命令数の少ないコードになっていることも
確認してます。条件jmp命令も少なくなっています。
C++相談室 part144
579 :デフォルトの名無しさん[sage]:2019/08/20(火) 15:51:20.21 ID:lOKfo+mN
最近のCPUは温度によってクロック数が変動する可能性もあるそうですね。
C++相談室 part144
582 :デフォルトの名無しさん[sage]:2019/08/20(火) 16:23:55.23 ID:lOKfo+mN
マクロスイッチ切り替え方式にして、ほぼ同時に両方を測定してみたら、
テーブル方式の方が速くなっていました。
C++相談室 part144
584 :デフォルトの名無しさん[sage]:2019/08/20(火) 17:25:38.94 ID:lOKfo+mN
>>580
アセンブリコードを見る限り、特に問題なく、人間が単純に書いた場合
と似たようなコードになっています。

ただし、一点、テーブルの c 番目の要素を参照する際、バイト整数の c
をゼロ拡張して32BIT 整数にする必要があるのですが、自分の使ってるVC++
だと、movzx 命令を使わずに、xor eax,eax; mov al,cl のように2命令
を使ってしまっている点が、人間が最適化するより遅いコードになってしまって
います。
将来性ないプログラミング言語。Delphi含まれず安心
130 :デフォルトの名無しさん[sage]:2019/08/20(火) 21:45:07.95 ID:lOKfo+mN
>>128
それに、ブロックの終了の記号が何にも無いのは明確さがなく、
ケアレスミスの元となる。レイアウト的なものは、空行を入れたり
少し違う業や関数からコピーして来たりするときにずれ易い。
ずれたときにブロックの終了記号があると助かる。

>>127
逆に助長性は安全性に繋がりやすい。例えば、C/C++の最後のセミコロン";"
は無くてもコンパイラがその都度推定できる可能性はあるが、
有った方が確実だから有る。Rubyなんかは無くても分かるときはなくて良い
仕様ではあるが、大規模プログラムではそれが見つけにくいバグの原因に
なる可能性がある。
将来性ないプログラミング言語。Delphi含まれず安心
137 :デフォルトの名無しさん[sage]:2019/08/20(火) 22:25:28.11 ID:lOKfo+mN
そういえば、プログラミングにおいても>>134の場合のように、関数の
引数を折り返して書く場合、どの程度引数の前に空白やタブを入れるべきかは
人間が見たときの「見易さ」で決まる。それは関数名 func 部分の長さに
よっても変化し得る。そして、何が美しいかは「美学」「美術」の領域に
入ってきてしまう可能性がある。だからプログラミングは芸術とも言われる。

その意味で、インデントに論理的な意味を与えすぎると、芸術的な
美しさが得られなくなってしまう可能性は高い。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。