週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

前回の記事のコメントの通り、Queue::headがLazyじゃないのが原因でした。先頭リストが空のQueueが作られる度に、Queue::headが自動的に呼ばれていました。これを確認するには、あらかじめ先頭リストに何か物を入れてから同じプログラムを走らせればよいです。

typedef EmptyQueue::
          snoc<IntType<-1> >::type::
          snoc<IntType<-2> >::type::
          tail OneQueue;
typedef FoldRight<SnocFn, OneQueue, ListByRange<0, SIZE>::type>::type Result;

int main(int argc, char* argv[]) {
  printQueue(Phantom<Result>());
}

結果は次のとおり。今回のグラフが左/上、以前のが右/下です。

time const of handling queue correctly.Time cost of handling queue.
グラフの形が違うとかそれ以前に時間が圧倒的に違います。100倍の高速化に成功しました^^);

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/442-a1e70484
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。