2018年7月20日どうもこんにちは、勤続3年目にして業界3年目のプログラマーです。今回はプログラムのお話をしていこうかと思います。プログラムを行っていく上で最適化というものが必要になるケースが度々あると思いますが、その最適化の手法の一つにキャッシュ・ブロッキングという方法があります。キャッシュ・ブロッキングとは?キャッシュ・ブロッキングはキャッシュに収まるようにデータ構造をブロック化します。ブロック化の目的は、複数回使用されるデータをキャッシュに保持することでデータの再利用の機会を活用することにあります。詳しい話はググってもらうとして、今日は実際にキャッシュブロッキングを考慮したプログラムを紹介していこうと思います。実際のプログラム例わかりやすい例が行列積の計算なので行列積のプログラムを紹介します。-O3となっています。だいたい2年前ぐらいの環境です。1024行列同士の乗算プログラムです。平均およそ2.496秒という感じになりました。実際には10回という数字はかなり物足りないものだとは思いますが、気になる方は実際に上のコードを実行してみてください。キャッシュを考慮したプログラム上で挙げたmatrix_multiply関数にてdo_block関数を呼び出します。-563316457472000.BLOCK_SIZE*BLOCK_SIZEの部分行列を扱うことになります。今回は32*32の部分行列です。i7の32KiBのキャッシュに余裕を残して収まっています。ネ本を参考にして書いたので詳細が気になる方は読んでみてください。平均1.165秒という感じになりました。さっきの1/2以下になりましたね。forの一行を付け足すだけです。-563316457472000.めっちゃ早くなりましたね。約10.1倍速です^^ちなみにAVXやループ展開などの手法を加えることでさらに早くなります。みなさんも興味があったら試してみてください。today)PREVランカース、アップデート?NEXT世はまさに大航海時代!コメント投稿は締め切りました。4で公開されている無料アセット気付いてしまったか...悪いが記憶を消させてもらうプランナーの仕事についてTrelloのススメ年末ポケモン大会が開かれた話。