タグ

2016年4月23日のブックマーク (4件)

  • Rubyで高速popcount - Qiita

    実装したいものを思い描いていたところ、その過程で「整数の1が立ったビットを数える」ということが必要となりました。ところが、Rubyで実装するとかなり遅いことに気づいたので、C言語などで実装してみることにしました(jkr2255/bit_counter)。 先行事例 最近はPOPCNTというCPU命令になるぐらいだし(後述)、だれか実装しているだろうと思ったら、意外とBignumについてはほぼ手付かずだということに気づきました。 「ないんだったら、自分で作ればいいのよ!」 負の数について Rubyの場合、整数が無限桁を(概念上)許容して、しかも負の数は2の補数表現ということもあって、符号ビットの1が無限に続くこととなっています。さすがにこの状態で1の数を数えても「無限大」となって意味がないので、負の数の時は「0の数を数えて、さらにそれをマイナスにして返す」という実装にしました1。 JRuby

    Rubyで高速popcount - Qiita
    ismage
    ismage 2016/04/23
    ポケットへ入れた Rubyで高速popcount
  • 今話題のFacebook Messenger Botをpythonで実装してみた話 - Qiita

    皆さんはTechCrunchさんのこの記事を読みましたか?読んでない?ならこっちは?あとはこことかこことかこことかこことか。 記事急増中。これ全部4/13からの記事。読んでない人は是非読んでください。そして知らなかった人は感動してくださって結構です。 Facebook MessengerをBotに出来るようになりました。 Facebook APIを少しいじればあっという間にできます。 どうやるの? ここを読めば何もかも書いてあるのですが、英語を読むと蕁麻疹が出る人たちのために適当に解説します。と言ってもやることはほとんどありません。だから俺も理解できました。 ちなみに今回はpython×Tornadoで実装してます。 適当にFacebook Appと Facebook pageを作る。 webhookで使うURLを認証する メッセージの受信と送信のプログラムを書く では順番に見ていきましょ

    今話題のFacebook Messenger Botをpythonで実装してみた話 - Qiita
    ismage
    ismage 2016/04/23
    ポケットへ入れた 今話題のFacebook Messenger Botをpythonで実装してみた話
  • わりかし軽い User-Agent マッチング - Qiita

    結論 後述のようなUAのマッチングをする場合、体感的にはString.prototype.match()を使うより、String.prototype.indexOf()を使う方が処理が早かったです(2016/04/20現在、当社比)。 例えば、UAの文字列からAndroid 5.x以前を検出したい場合の記述は、以下の通りです。 var ua = navigator.userAgent.toLowerCase(); var isLollipop = ua.indexOf("android 5") > -1; // If Android 5.x is true var isAndroid4x = ua.indexOf("android 4") > -1; // If Android 4.x is true var isAndroid2x = ua.indexOf("android 2") >

    わりかし軽い User-Agent マッチング - Qiita
    ismage
    ismage 2016/04/23
    ポケットへ入れた わりかし軽い User-Agent マッチング
  • Pythonのメモリ使用量を減らすポイント - Qiita

    今回は、iXce’s blog » Blog Archive » Optimizing memory usage in Python: a case study という記事を見つけて興味深かったので紹介したいと思います。何も説明書いてないところがあるので、詳しく知りたい人は元記事を読んでほしいです。 動機 プレーンテキストをGコードに変換するプログラムを書いている 3.8MB (14万Gコード) のファイルを読み込むと、244MBもメモリを使ってしまう だからメモリ使用量を減らしたい やったこと プロファイル どこがメモリをたくさん使ってるのか調べるためにHeapyを使う $ pip install guppy で入れられる。 するとこんな感じの結果が出力される。 Partition of a set of 225737 objects. Total size = 115386656 by

    Pythonのメモリ使用量を減らすポイント - Qiita
    ismage
    ismage 2016/04/23
    ポケットへ入れた Pythonのメモリ使用量を減らすポイント