タグ

Cとalgorithmに関するyokochieのブックマーク (8)

  • XXmallocのメモリ管理アルゴリズムについてわかりやすい記事 - Qiita

    dlmalloc, tcmalloc, jemallocについて,以下の各記事を読めば各mallocのアルゴリズムはわかるはず. dlmalloc Linuxの一部やAndroidのDalvik VMで利用されている.シンプルながらうまく考えられている. チャンク(連続空き領域1つ)の境界と構造体の境界が違う所が罠. http://g.oswego.edu/dl/html/malloc.html http://mkosaki.blog46.fc2.com/blog-entry-241.html にわかりやすい講演資料が,と思ったら動画がprivateになってる… tcmalloc thread-caching malloc. Googleで利用されている. スレッドがキャッシュ持つのでfreeしてもメモリ利用量が減らない!のが罠. http://goog-perftools.sourcef

    XXmallocのメモリ管理アルゴリズムについてわかりやすい記事 - Qiita
  • とある愚直のアロケータ - 神様なんて信じない僕らのために

    前置き。dlmallocについて書くぞ!と言っておいて書いてなかったので。orz...すみません。 あろけーたをじぶんでかいてはいけません!! なぜ、って大抵糞だからです。 例えば、こんな管理構造を持ったアロケータをよく見るんですが、 typedef struct _Allocator { unsigned char* pPool; // メモリプール int nPoolSize; // メモリプールのサイズ struct _SMemChain* pHead; // 番兵 struct _SMemChain* pTail; // 番兵 struct _SMemChain* pLast; // 最後に追加されたチェインタグ } Allocator; typedef struct _SMemChain { struct _SMemChain* pPrev; // 前のチェインタグ struct

    とある愚直のアロケータ - 神様なんて信じない僕らのために
  • 開発メモ: Kyoto Cabinetのロック機構の改善

    Kyoto CabinetはIO負荷が高い場合にCPU負荷も高くなりがちだという指摘を受けて、それを解決すべくロック機構を見直したという話。 スロットロック ハッシュテーブルの操作はハッシュバケット毎に完全に独立して実行できるのが強みだ。ハッシュテーブルは計算量が有利なだけでなく、並列性にも優れるということ。実際には下層のファイルIOで実装依存の排他制御が行われることになるが、ハッシュ層だけ見れば理想的な並列性を備えている。ただし、同じバケットに連なるレコード群の操作は互いに依存関係があるので、それらは一括して排他制御してやる必要がある。となると、バケット毎にロックを用意するのが理想だが、実際にはメモリを節約するために、予め決めた数のロックを用意して、ここのロックに複数のバケットを割り当てる構成をとる。リソース空間をスロットに分けるというイメージから、これをスロットロックと呼ぼう。 スロッ

  • Lock-free Stack - くまメモ

    ではLock-free Stackについて図とプログラムを交えながら説明します。C++ではなくCを使います。 これは複数スレッドからロックによる排他無しで共有できるスタックで、外部には node* top; void push(const T*, node** top); bool pop(T*, node** top); を提供します。*1 このスタックはbottomへと繋がる線形リストをベースとして動作するため、配列ベースのスタックにパフォーマンスで劣ることもあります。*2 その線形リストを構成するノードのデータ構造から見てみましょう。 struct node{ T data; node* next; }; ごく典型的な線形リストのノードと同じです。 道具の紹介 lock-freeデータ構造を構成する場合に頻出のCompare And Swap。 C言語の擬似コードで書くと以下のような

    Lock-free Stack - くまメモ
  • C - でOpenMP使ったら、+二行で範囲10億が2秒 : 404 Blog Not Found

    2010年08月06日05:30 カテゴリMath C - でOpenMP使ったら、+二行で範囲10億が2秒 ぬあんと 素数10億まで3秒 - JGeek Log danさんの場合, 1bit でフラグを記憶してるのでメモリが1/8 で済む。そこでメモリアクセスの時間が効いてるんだろう。それならキャッシュに収まる位のブロックに計算を分割しその内側で素数pのループ回せばもっと速くなるかも?と思いやってみた。見事3秒で終わった! これを上回ることは出来るか? 出来ました。 以下、証拠。 % gcc -W -Wall -O6 -fopenmp primes_ita.c primes_ita.c: In function ‘main’: primes_ita.c:69: warning: unused variable ‘p’ % time ./a.out 06.983u 0.084s 0:01.

    C - でOpenMP使ったら、+二行で範囲10億が2秒 : 404 Blog Not Found
  • C - で私も素数を数えてみた : 404 Blog Not Found

    2010年07月26日18:30 カテゴリMath C - で私も素数を数えてみた 世間は夏休みだそうだし、連日の猛暑で体調も底だし、というわけで私も素数を数えてみた。 10兆までの素数のリストを作ってみませんか? - 記者の眼:ITpro もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 プライムナンバーズ David Wells / 伊知地宏監訳 / さかいなおみ訳 [原著:Prime Numbers: The Most Mysterious Figures In Math] といっても原田記者と同じように書いても芸がないので

    C - で私も素数を数えてみた : 404 Blog Not Found
  • C/C++ Technical Documents

    C++ 寄稿記事 επιστημη 氏から寄稿していただいた、開発者の方々にお役に立つテクニカルドキュメントです。Articles、References、Miscelaneousに分かれて説明しています。初心者の方からプロの方まで役に立つ読み物と資料集です。是非、開発のお役にお立て下さい。 Articles: 読み物 References: 資料集 Miscelaneous: 番外編

  • お手軽転置インデクスを用いた検索エンジン: (1) AND検索編 - シリコンの谷のゾンビ

    突然Cでコードを書きたくなったので,なんちゃって転置インデクスを用いた検索プログラムを書いてみた. 転置インデクスとは,索引語と呼ばれる単語が出現する文書情報 (場合によっては位置情報も) を保持したデータ構造のことで,索引語と,それに対応する転置リストによって構成される. # 索引語 -> 転置リスト hoge -> 5: 1,2,3,4,5 fuga -> 3: 1,4,5 piyo -> 2: 4,5これは,hogeという単語が文書1,2,3,4,5に出現し,fugaという単語が文書1,4,5に出現し,piyoという単語が文書4,5に出現する情報を保持している.最初の5,3,2という数字はそれぞれ索引語がいくつの文書に出現したかという文書頻度 (document frequency; DF) を表している. 検索クエリhogeが入力された場合には,文書1,2,3,4,5を検索結果とし

    お手軽転置インデクスを用いた検索エンジン: (1) AND検索編 - シリコンの谷のゾンビ
  • 1