2017-08-01から1ヶ月間の記事一覧

大掴みBoost.PolyCollection

C++

この間、Boost 1.65がリリースされた。リリースノートをざっと見た所、新規ライブラリがいくつか入っている。そのPolyCollectionなるものが気になったのでざっと見てみることにした。これはその覚え書きである。 PolyCollectionは、多相型向けのコンテナだ。…

座標ベクトルと汎化について

私の書くプログラムでは、趣味でも仕事でも、低次元(大抵は2か3次元)でのベクトルを扱うことが多い。そうなると普通は座標ベクトルを意味する構造体を作って管理するだろう。

FizzBuzz

C++

会話をしていると、FizzBuzzの話になった。何かの拍子にFizzBuzzを書いてくださいと言われたらどうするだろうか、と思ってちょっと書いてみることにした。たまには気楽に書けるものもよい。 FizzBuzzを自然に捉えると、数字を文字列に変換していくルールに従…

関数型言語としてのC++ Template MetaProgramming入門

C++

C++ではtemplateを使ってコンパイル時に計算を行うことができる。 今回は、関数型言語としての視点からC++テンプレートメタプログラミング(C++-TMP)の簡単な紹介をやってみたい。 注:私はHaskellとlispの経験がホンの少しだけあるが、どちらも使いこなせる…

アセンブリ解読 小休止

asm

これまで、4回に渡ってコンパイラ(gcc v5.4.0)の生成するアセンブリコードを解読してきた。これまでの内容は、以下のような感じになる。 その1: レジスタの使い方、関数の定石、初歩的な最適化 その2: 条件分岐、除算の最適化 その3: 除算の最適化と定数伝播…

アセンブリ解読 その4

asm

その2で宣言した通り、今回の対象はループだ。その2に続きが発生したので番号的には飛んでしまっているが、続きという点は変わらない。 しかしループとなると絶対にSIMDとループアンロールが絡んで面倒なことになる、と思っているので少し腰が重いが、最適化…