平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

早すぎる最適化

Nick CraverはStackOverflowのアーキテクチャリード。

《早すぎる最適化》に関する一番の問題点といえば、ほぼ毎回、これまでの流れを何もわかってないやつがやってきて二言目には「早すぎる」と口出ししてくることかな。《残りの重要な3%》で日々戦ってる連中は、そんな風に言われるのにもう飽き飽きしてるわけだけど。

《早すぎる最適化は諸悪の根源》って言われるときはいっつも総論でしかないし、そういう言われ方はモヤモヤする。要するに「引用元をちゃんと読んだこともないのに、一つ覚えしてます」ってことでしかないもんなー。そういう引用の仕方はほんと酷いよ。

最適化はそれはそれでよく話し合う方がいいと思うけど、いつ最適化をやるべきか・やらざるべきか自分にはわかってる、とかいうのはまた別の話で、それは多くの開発者に異議を唱えてるも同然だよ。いつ最適化するか?そんなの場合によるから。人生なんでも(どんなことでも)トレードオフだし。最適化に使った時間だって同じこと。

何回実行する?
実行時間はどのぐらい大事?
リソース使用量はどのぐらい大事?
リソースを占有することからくる機会費用は?
オプティマイザーは他にどんなことをする?
状況が変わる頻度は?
保守性はどのぐらい考慮されている?

Amazon Goに行ってきたよ

猫にもC#にも関係ないけど、たまにはこういう記事も書きます。

Amazon Goワシントン州シアトルのダウンタウン近く(2131 7th Ave, Seattle, WA 98121)にあります。

営業時間は月曜〜金曜の午前7時〜午後9時です。土日は閉店しています。

店に入るにはクレジットカードを登録したAmazonのアカウントとAmazon Goモバイルアプリ(iOS/Android)が必要です。

水曜の夕方に行ったのですが、全然並んでなく、すぐ入れました。

店の前で店員が「アプリはインストール済みですか?」と尋ねています。希望者には買い物袋をくれます。

入り口にはゲートがあり、Amazon Goアプリで表示した2次元バーコードをスキャンするとゲートが開きます。この写真は入店後、店の内側から撮ったもの。

なるほど、グローサリー(食料雑貨店)とはコンビニっぽい感じなのですね。

Amazonが買収した高級スーパーWhole Foods Marketプライベートブランド"365 Everyday Value"の商品棚。

お酒コーナーには店員がいて、写真入り身分証明証(パスポートなど)の提示を求めています。なるほど、レジがないので、ここでチェックするんですね。

天井や棚の上にはカメラがあり、客の動きをトラッキングしています。それと、棚自体に重量センサーもあり、それらを合わせて取り出した商品を認識するとのことです。

チョコレートがあります。ひとつ買ってみましょう。

なお、誰かと一緒に店に入ったとしても、他の人の袋に商品を入れたり、他の人の袋から商品を取り出したりしてはいけないそうです。(最初に商品を掴んだ人のアカウントに請求が来ます。)

欲しいものを袋に放り込んだら、あとはゲートを通って店を出るだけです。

店を出て数分後に、購入した商品の明細がAmazon Goアプリに通知されます。(リアルタイムではありません。)

今回の買い物時間は9分弱でした。まあ狭い店ですし、長居するようなところではないですね。

いやあ、面白い体験でした。

.NETに型クラスを……の話ふたたび

以前の記事でこんなことを書いてたのですが

もちろんCLRにもILにも型クラス的なものなんかないわけで、オダスキー教授が言うところの「貧者の型クラス(pdf)」を使う、つまり型に適合するメソッド群をインスタンスとして渡してやるしか方法はないわけですが(ちなみにScalaでは、そのインスタンスを暗黙的に生成したり渡したりできる仕掛けがある)。

2014-04-29 - 猫とC#について書くmatarilloの雑記

(追記)ん?型クラス(もどきインスタンス)、new()制約をつけられるんじゃないの?

2014-04-29 - 猫とC#について書くmatarilloの雑記

ちょっと違うアプローチを実験してる人がいる模様。

visualfsharp/concepts at master · crusso/visualfsharp · GitHub

長めのドキュメントを読むと……

static class Overloads {
  public static bool Equals<EqA, A>(A a, A b) where EqA : struct, Eq<A> => 
    default(EqA).Equals(a, b);
}

なるほど、型クラス(もどきインスタンス)を構造体で作れば、new T()とかしなくてもdefault(T)でいけるのか。

.NET Coreで動くMySQL Client

とのことで探してみた。guitarrapcさんありがとう。

これかな?

A fully async MySQL ADO.NET provider for .NET and .NET Core

このあたりもいける?

Microsoft Build 2016 セッションリスト

公開されました。→シアターセッションが追加で公開されました。

https://channel9.msdn.com/Events/Build/2016

ついでなので、JSON形式にしてみましたよ。

https://gist.github.com/matarillo/f292b7865062beb65b05



Build 2016の個人的に興味あるセッションは以下。

他にも、ホログラム/HoloLensものが増えてて、そちらも興味深い。

Alea GPUというCUDA C#ライブラリでC++に匹敵する性能が出た

とのこと。(neueccさんのツイートで知った)
http://blog.quantalea.com/?p=9871

OpenCLやる前にSIMD使い切れっていう幻想……の話はもういいです^^
今回のはOpenCLじゃなくてCUDAですが。