オペレーショナル・エクセレンス
https://www.youtube.com/watch?v=9iI_QTR3UrE
“やるしかない”から“どうしてもやりたい”仕事へ:新津春子さんインタビュー【前編】 ・インライン展開 - 関数Aが関数Bを頻繁に呼び出し、関数Bが比較的小さい場合は、BがAにインライン展開される
・仮想呼び出し推理 - 仮想呼び出しまたは関数ポインタからのその他の呼び出しが特定の関数を頻繁に呼び出す場合、呼び出される関数に条件付きで実行される直接呼び出しを挿入してインライン展開する
・レジスタ割り当て - プロファイルデータに基づいたレジスタの割り当てが改善される
・基本ブロックの最適化 - 特定フレーム内で一時的に実行されるブロックを同じページセットに配置し、メモリのオーバーヘッドを最小限に抑える
・サイズ/速度の最適化 - プログラムでもっとも多く実行時間が費やされる関数の速度を最適化
・関数のレイアウト - コールグラフとプロファイルされた呼び出し元/呼び出し先の動作に基づき、同じ実行パスになる傾向のある関数を同じセクション内に配置
・条件付き分岐の最適化 - switchステートメント内の特定の値がほかの値より頻繁に使用されているかどうかを確認可能。また、if...elseのどちらがより頻繁にtrueになるかに応じて、ブロックを先に配置する
・実行されないコードの分離 - プロファイル実行中に呼び出されないコードを、一連のセクションの最後に追加される特別なセッションに移動
・EHコードの分離 - EHコードは例外的に実行されるだけなので、例外が例外的な条件で飲み発生すると判断できる場合に、個別のセクションへ移動
・メモリの組み込み - 頻繁に呼び出されるかどうかを判断し、組み込みの拡張を最適化。また、移動やコピーのブロックサイズに基づいて最適化
Google Chrome、新最適化で読み込みを最大10%高速化
https://gyazo.com/9ad576093f45daf2536face2a59ceda0
バイクは燃費のいいモデルに買い換えて、ハンドルにはグリップヒーターとハンドルカバーをつけました。あとは、雨の日にテンションが下がらないように屋根をつけたり、出し入れしやすい大きなボックスをつけたり。
UberEatsのアプリを使っているとバッテリーの消耗が激しいので、バイクから電源をとれるようにもしましたね。
ピックアップに向かうレストランでは、準備ができていなかった場合は「あと何分でできますか?」と、まず聞きますね。「5分以上かかります」と言われたら、ピーク時はキャンセルします。オフピークは10分かな。
10分〜15分くらい待つこともあるので、そういう時間を削るようにしています。お茶とかアメとかを出されたら、ありがたいんですけど、時間がかかるかもしれないと思ってしまいますね。
──そこまで徹底的にやるんですね。
そうです。1時間あたりに3件やることが平均と言われてるみたいなんですけど、なるべく1件あたりにかかる時間を減らすようにしていますね。
1時間3件だと、1件あたり20分。これを4件にしたかったら、1件につき5分も削らなければいけません。
この5分をどこで削るのか? ルートなのか、さっき言った装備なのか、ピックアップの時間なのか……考えたらきりがないのですが、それをひたすら考えてやっています。
あ、あと、時間を削るためにご飯は基本フィンガーフードですね。ピックアップ先で、すぐ出来上がりそうなおにぎりとか、焼き鳥屋のおっちゃんに「2本ちょうだい!」とか言ったり、ケンタッキーで「カーネルクリスピー、1本ください」とか。
ローソンのピックアップだと、ウイダーインゼリーを買って、信号待ちでブチューってやってました。たまにお店に入る時があるとすれば、吉野家で席について食べて会計して、5分以内にお店を出ますね。
ただ、朝と夜はしっかりと家で食べますよ。
──アスリートみたい。
1分1秒を削っていくという意味では似ているところもあるかもしれません。
もともとバイクでメッセンジャーをやっていたんですよ。だから、東京都内なら最初に3秒くらい地図を確認すれば、だいたいは最短ルートで目的地に行けます。その能力が一番の強みかもしれません。