Entries from 2012-12-01 to 1 month

JavaScript(V8)で避けるべき(だった?)クロージャの使い方

Grokking V8 closures for fun (and profit?) に、ほんの少しだけ触れられている話なんですが。ごく最近まで V8 には、オブジェクトリテラルの中で関数リテラルを使った場合に非常に遅くなる(というかGCが多発する)問題があった。たとえば、 function doit()…

C++ の vtbl に、関数以外の型のデータを入れる

C++ でコードを書いていて、vtbl に関数以外のデータを入れたくなったことはありませんか? 僕はあります。型によって異なる定数を高速に知りたい(たとえばあるフィールドが何バイト目にあるか)けど、仮想関数呼出だと遅いし、かといって、インスタンス変…

C++ でコンパイル時に 2^n に切り上げる

C++ で速度を要求されるプログラムを書いていると、コンパイル時に定数を 2^n に切り上げたいことがあります。というか、必要だったので書いた。 template<size_t N> struct RoundUp { template<size_t M, size_t D> struct _Between { static const size_t MidV = 1 << (M + D / 2); stati</size_t></size_t>…