Haskellで速いコードを書くためのヒントを無秩序に集積したもの。環境としてはGHCを想定する。私は高速化について詳しい訳ではないが、思い付いたことはなんでもかんでも書くように心がけたので、運が良ければ何か役に立つ情報があるかもしれない。 並列処理のパフォーマンスについてはこの文章では触れない。まったく経験がないので。同じ理由で、浮動小数点数を多用した数値計算コードの効率化と、書き換え規則を多用する高水準の最適化も扱わない。 お願い: 文中に間違いや分かりにくい部分があれば指摘いただけると有難いです。また、他に載せた方が良さそうな最適化テクニックや、その他の改善提案があれば教えてください。掲示板またはメールまたはTwitter(@mkotha)までお願いします。 目次 基本的なこと 遅延評価の計算量見積もりの方法と、GHCの内部に依存しないテクニック集。入門書を読んだけれども、Haske
The significant changes to the various parts of the compiler are listed in the following sections. There have also been numerous bug fixes and performance improvements over the 6.12 branch. GHC now defaults to the Haskell 2010 language standard. Libraries are not quite so straightforward. By default, GHC provides access to the base package, which includes the Haskell 2010 libraries, albeit with a
Haskellでフィボナッチ数を計算するコードとして、次のものが有名だ。 fib :: [Integer] fib = 1 : 1 : zipWith (+) fib (tail fib) これのn番目の要素を取得するコードがO(n^2)よりも遅いということを指摘した記事があった。 Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー 実はこの現象は、リストfibを先頭から順番に使っていった場合には起こらない。(!!)などでリストの途中の要素を取得して、その値をいきなり評価した場合に発生する。以下が実証用コード。 {-# OPTIONS_GHC -O3 #-} import System.Environment(getArgs) -- 最初のfib fib :: [Integer] fib = 1:1:zi
C++ で、論理型言語(GHC)コンパイラを書く 論理型言語コンパイラを作る理由 基本ポリシー: いろいろ諦める GHC の基本 実装関連 C++ を使う理由 論理変数を実装する ゴールのコンパイル ゴールキューと疑似マルチタスク 疑似マルチタスクから本当のマルチタスクへ 最適化 ガベージコレクション Boehm GC を C++ で使うための調査 ガベージコレクションの実装 JavaScript で GHC [JavaScript] 8-queen [JavaScript] Canvas を使った描画 [JavaScript] 組み込み述語の書き方 (メモ) KLIC との比較 GraphViz と GHC オブジェクト構造の可視化(案) GraphViz によるグラフィカルデバッグ GHC プログラミング 入出力と順序制御 竹内関数と遅延評価 [JavaScript] wait/1 と
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く