16.7msecでできる仕事

時間と金は絶対値を見るべきだと思う。


プログラムの高速化は、真面目にやると計測の問題になる。
高速化の作業は、実際にはプログラムの処理に対して、実際にかかっている時間が妥当なのかどうかを調べて、妥当でない場合は原因を調べるという、一種のデバッグみたいな作業になる。


この作業をするとき、処理時間を絶対値で見ることが重要だと思う。


高速化ではプロファイラを使ってボトルネックを調べましょうとかあるが、あれはあくまで第一歩で、実際に修正するには、かかっている時間が妥当かどうかを知る必要がある。それを調べるには、妥当な絶対時間と、今の処理の絶対時間というのを把握しておかないといけない。

例えば、「100MBのファイルを読む時間が全体の90%を占める、IOネックなのでこれ以上早くならない」とか言われても、それが妥当かどうかはわからない。これが、「100MBのファイルを読むのに、今は5秒かかっている」とか言われると、まあ、今のOSのファイルシステム経由の連続読み書きだと、数十MB/sぐらいなので、100MBで5秒は、妥当かどうかは、調べないとわからない際どいラインだというのがわかる。つまり結局調べないとよくわからないということがわかるのだった(声に出して読みたい不自由な日本語)


僕は、定規としてわかりやすいのは、16.7msecだと思っている。


処理時間を考えるときは、常に最新ゲームのゲーム画面を思い浮かべる。


最新ゲームは、16.7msecで、4Kの画像の各ドット対してそれなりに演算量のあるシェーダを回して、オブジェクトの各頂点にもシェーダを回して、ゲーム中に多数存在する生物のAIが経路探索し、物体の剛体衝突判定を行い、背景の流体を動かして、(だましだましとはいえ)世界中の数十人がネットワークを通じてリアルタイム対戦して、ゲーム実況者が音声を入れているのである。

0.5秒かかる処理があったとする。0.5秒というと一瞬に見えるが、ゲームなら、30フレーム分処理が動いている。はたして、あなたの、その、0.5秒かかっているその処理は、最新ゲーム画面30フレーム分と比べて、同じだけの処理をしていると言えるのか、言えないのか、とか、は、あまり考えないようにしようと思った。まあみんないそがしからね。そんないちーち細かいところまで妥当かどうかとかカンガエナイホウガヨイネ。


同じような問題として、お金も絶対値で見るべきというのがある。


一億円プロジェクトだと、100万円は、1%でしかない、が、100万は大金であるというのを忘れるべきではないと思う。100万円の価値は、1兆円プロジェクトでも、100万円プロジェクトでも、同じ価値だ。常に、100万円あったら何ができるか、というのを考えるべきだと思う。100万あれば、人間ひとり1ヶ月動かせるのである…


と、でも思ったか!??


たかが、100万で、人間を自由に動かせるという考えが甘いブラックだということに気付くべきでは??1ヶ月は30日であって、16.67msec 1フレだとすると、1ヶ月は、155520000 フレーム分の処理である。1人月(ピー)万と言うが、その仕事は、バッフィー 155520000 フレーム分の価値があるのか? 155520000 回分、4Kシェーッダーーーが動いてるんだぞ???そもそも、よく考えろ、俺が、人間が、意思を持った一個の生物が、金で自由に動かせると思ったら大間違いだぞ!!こんな人権を現金に変換する仕事なんてやめてやる!!!俺は!自由に!なるんだ!!!!


まとめ: 一般に、無職のほうが追い詰められて自由度は低くなることが多いので仕事やめて自由になろうという考えは危険です。