タグ

ブックマーク / methane.hatenablog.jp (2)

  • ISUCON 8 予選の Go 初期実装に見る初心者コード - methaneのブログ

    会社のBlogにも書いたのですが、ISUCON 8 予選で負けてきました。 さて、 ISUCON の初期実装の定番として、初心者が書いたようなSQLやコードになっている点が挙げられます。 今回の Go の初期実装もその定番にもれず、初心者がやりがちな、Goの良さを殺してしまうコードがありました。 今回負けた反省点の一つとして、アプリの書き換えを二人でやっていたのでコンフリクトを恐れてそのリファクタリングを怠ったというのもあります。 Go戦に参加されるチームの方にはぜひこれを克服してもらいたいと思います。 アンチパターン: 長い無名関数 例: https://github.com/isucon/isucon8-qualify/blob/9d7890f5433bdaf2cec75b4cdf1ebd0d9a531281/webapp/go/src/torb/app.go#L404-L492

    ISUCON 8 予選の Go 初期実装に見る初心者コード - methaneのブログ
    f99aq
    f99aq 2018/10/13
  • Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ

    あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。 参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参照カウントに対する修正が頻発するんで、同じオブジェクトを複数のスレッドが頻繁に操作したらコア同士で1次キャッシュの取り合いになって性能上がらないけど、現状よりはだいぶマシだ。 Python で GIL の除去が難しいのは、PythonJava よりも高級なアトミック性をもつ言語だからだ。例えば、 # d1, d2 は両方ローカル変数にある辞書. d1.update(d2) これは、Python VMレベルでは、 d1 の参照、 update メソッドの参照、 d2 の参照、メソッドの呼び出し、という処理になるんだけど、このうち dict.

    Python の GIL 排除のために Software Transactional Memory が注目されている理由 - methaneのブログ
  • 1