タグ

2013年5月7日のブックマーク (3件)

  • std::mapの使い方

    Collada読み込みにおいて、stlのmapを使ったほうがよさそうな場面に出くわしたので、使い方をチェック。キーはstd::stringが手っ取り早そう。要素の挿入・参照方法は、イテレータを使用しないシンプルなものを採用した。 #include <iostream> #include <string> #include <map> using namespace std; int main(int argc, char **argv) { map<string, int> tbl; // 挿入 tbl["hoge"] = 0; tbl["piyo"] = 10; tbl["fuga"] = 20; // 参照 cout << tbl["hoge"] << endl; cout << tbl["piyo"] << endl; cout << tbl["fuga"] << endl; ret

  • プログラミング :: 高速なプログラムを書く為に :: 初めに

    注意 この文章は自分で色々調べながら生半可の理解で書いた物であり、 信用出来ない部分が沢山あります。 何やら、変な宗教を流行らせるなという注意を受けてしまいました → の虫: いまだに変な宗教が流行っている。 (しかし、内部向けに書いた物を、よく見てくれる人がいる物だ。 御免なさい…詳しい人は見ないと思って、調子に乗って、適当な事を偉そうに書いちゃってますが…。) とはいえど、勉強になるのでありがたいです。 何か間違っている事があったら、直接連絡もして頂けると尚嬉しいです。 (或いは、コメント欄とかを用意した方が良いのかなあ。) 後、受けたコメントについて調べたりした内容も載せておく事にします → 初めに (コメントに対し)。 GPGPU について書こうと思ったのですが、それよりも先に、 高速なプログラムを書くに当たって注意するべき一般的な事を述べておいた方が良い様に思ったので、 「高速

  • qsortを撃墜し(最悪ケースを与え)てみた。 - 簡潔なQ

    glibcのqsortをターゲットに、クイックソートの最悪ケースO(n^2)を与えてみた。 先日の記事の通り、glibcのqsortはマージソートだが、非常に大きいデータのときはクイックソートを利用するので、そのように仕向けてみた。 実行した結果、約5億バイトの配列が確保され、ソートにかかった時間は以下のようになった。 マージソート(非アタック用データ):37126ミリ秒 マージソート(アタック用データ):46724ミリ秒 クイックソート(非アタック用データ):39189ミリ秒 クイックソート(アタック用データ):中断(507514ミリ秒以上) 明らかに最悪ケースである。 環境は OS: Debian GNU/Linux (sid/unstable) Compiler: gcc version 4.3.3 (Debian 4.3.3-8) C Library: glibc version

    qsortを撃墜し(最悪ケースを与え)てみた。 - 簡潔なQ