タグ

cに関するmoozのブックマーク (155)

  • Man page of MKSTEMP

    mooz
    mooz 2010/11/02
    mkstemp, 一時ファイルを作成する.
  • TCMalloc : Thread-Caching Malloc

    Sanjay Ghemawat, Paul Menage <opensource@google.com> Motivation TCMalloc is faster than the glibc 2.3 malloc (available as a separate library called ptmalloc2) and other mallocs that I have tested. ptmalloc2 takes approximately 300 nanoseconds to execute a malloc/free pair on a 2.8 GHz P4 (for small objects). The TCMalloc implementation takes approximately 50 nanoseconds for the same operation pai

    mooz
    mooz 2010/10/06
    tcmalloc の仕組みについて. 中央のヒープがスレッド毎にローカルキャッシュを割り当て. 定期的に GC が走り, 中央のヒープへメモリ領域を戻す. フリーリストを保持.
  • git.naquadah.org Git - awesome.git/blob - common/array.h

    7  * This program is free software; you can redistribute it and/or modify

    mooz
    mooz 2010/10/02
    マクロで foreach
  • linux のシステムコールをフックする : DSAS開発者の部屋

    最近、とあるクローズドソースなデバイス管理ツールの挙動が気になり、その動作について解析してみることにしました。 プログラムをデバッグしたり解析したい時、どんなシステムコールが呼ばれ、どのような引数が渡されているかを、調べることができる strace は非常に有用です。 しかし、strace では ioctl で渡される複雑なデータ構造を表示することはできないため、システムコールをフックして引数を表示するという手段を取ることにしました。 そんな訳で linux でシステムコールをフックする方法について調べて見たところ、意外といろいろな方法が有ることを知りましたので、試してみた方法を幾つか紹介したいと思います。 注)今回の実験に使用した linux kernel のバージョンは 2.6.25.11 です。異なるバージョンではこの実験通りにはならない場合があります。 LD_PRELOAD を使っ

    linux のシステムコールをフックする : DSAS開発者の部屋
    mooz
    mooz 2010/10/01
  • ホワット・ア・ワンダフル・ワールド C/C++ コンパイラでの末尾再帰最適化判定

    なんかプチブームに. 末尾再帰最適化をC/C++上で検知してみたい (higepon さん) 末尾再帰最適化判定 (yaneurao さん) 再帰判定 (shinh さん) んで,ちょっと気になったのが. 再帰の最適化 (masa.edw さん) shinh さんの fact のコードは末尾再帰じゃないけど、こういうのもちゃんと解析して最適化するんだー GCC すげー。 いやいや,ちゃんと末尾再帰のコードですがな… 追記 : 全然末尾再帰じゃないです (寝ぼけすぎ…).末尾再帰 (= ループ) に (GCC が) 変換可能なコード,です. shinh さんのコード (質部分だけ) int fact(int x) { return x == 1 ? 1 : fact(x-1) * x; } は, int fact(int x) { if(x == 1) return 1; else ret

    mooz
    mooz 2010/09/20
    すごひ
  • でっつ :: Entries :: お母さんみたいにもっと3ヶ月前に教えて欲しい

    お母さんみたいにもっと3ヶ月前に教えて欲しい Posted by admin on the 28th of 3 月, 2008 at 12:00 am under 未分類.    This post has no comments. ccacheを使えば、C++のコードのコンパイルが死ぬほど遅くても大丈夫という情報が。これはheaderファイルなど頻繁には変更しないような部分のコンパイル結果を自動的にキャッシュしてくれるソフトウエアだ。よっぽどのことがないかぎり、一人で開発しているコードでは、includeする色々なheaderファイルのほうが、自分で入力するソースコードより多い。しかも、template programmingを使いまくるBoost Spiritのようなinculdeするheaderが大きくて、構文解析の処理量が多いライブラリを利用していると、明らかにheaderのせいで

    mooz
    mooz 2010/09/09
    ccache. ヘッダファイルなど, 頻繁に変更されない部分のコンパイル結果を自動的にキャッシュしてくれるソフト.
  • Question 10.4

    comp.lang.c FAQ list · Question 10.4 Q: What's the best way to write a multi-statement macro? A: The usual goal is to be able to invoke the macro as if it were an expression statement consisting of a function call: MACRO(arg1, arg2); This means that the ``caller'' will be supplying the final semicolon, so the macro body should not. The macro body cannot therefore be a simple brace-enclosed compoun

    mooz
    mooz 2010/09/05
    マクロでの do { /* */ } while (0) の理由. 他.
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    mooz
    mooz 2010/09/03
    C 言語のサブセットインタプリタ.
  • フリーソフトウェア徹底活用講座 - GCC - 岸哲夫 - Interfaceコラム目次

    ◆移り気な情報工学 第62回  地震をきっかけにリアルタイム・システム再考 第61回  海を渡って卵を産む北京の「海亀族」 第60回  超遠距離通信とソフトウェア無線 第59回  IT先進国フィンランドの計画性 第58回  物理的に正しいITの環境対応 第57回  年金,e-チケットに見るディジタル時代の情報原 第56回  「着るコンピュータ」から「進化した布地」へ 第55回  技術を楽しむネットの文化 第54回  情報爆発2.0 第53回  プログラミングの現場感覚 第52回  GPS+LBS(Location Based Service)がおもしろい 第51回  技術の格差社会 第50回  フィンランドに見る,高齢化社会を支える技術 第49回  たかが技術倫理,されど技術倫理 第48回  若者の理科離れ,2007年問題から「浮遊」せよ 第47回  機械のためのWWW――Google

    mooz
    mooz 2010/09/03
    GCC 独自拡張の説明など.
  • sotarokを勝手に祝う会 - moriyoshiの日記

    sotarokを勝手に祝う会に行ってまいりました! 僭越ながらこのたびはLTをさせていただいたので、その内容の紹介をさせていただきたく。(日立風) 皆様ご存知のことと思いますが、OSSコミュニティーにおいて、開発者が結婚する際には、新郎と新婦に オリジナル○○○○○○○○○○○ を贈呈するという慣習があります。 はい、もちろん オリジナルApacheモジュール ですね。 というわけで、今回は mod_sotarok mod_mikko を作らせていただきました。 mod_sotarok-mod_mikko at github.com mod_sotarok.c: /* * Copyright (c) 2010 Moriyoshi Koizumi * * Permission is hereby granted, free of charge, to any person obtaining

    sotarokを勝手に祝う会 - moriyoshiの日記
    mooz
    mooz 2010/08/22
    Apache モジュール作りたい
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
    mooz
    mooz 2010/08/17
    gtest, glog, re2, cmdline, waf, openMP, Eigen
  • Manpage of AIO_READ

    mooz
    mooz 2010/08/09
    aio_read. 非同期 I/O.
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
    mooz
    mooz 2010/08/01
    テスト, テストカバレッジ, ビルドツール SCons, プロファイラ, などなど. C/C++ でこういった記事はあまり見ないので大変ありがたい.
  • 素数10億まで3秒 - ita’s diary

    404 Blog Not Found: C - で素数を数え直したら、範囲10億で10秒切ったお むむ、以前自分が書いた奴だと、ホットスポットでやってる事はほとんど同じなのに30秒ほどだった。 for (p=2, 3, 5, 7, 11, ...) for(i=istart; i<size;i += p*2) pflag[i]=0; danさんの場合, 1bit でフラグを記憶してるのでメモリが1/8 で済む。そこでメモリアクセスの時間が効いてるんだろう。それならキャッシュに収まる位のブロックに計算を分割しその内側で素数pのループ回せばもっと速くなるかも?と思いやってみた。見事3秒で終わった! 以下コード danさんのbitmap.cに以下を追加 bitmap *bitmap_block(bitmap *parent, size_t offset, size_t size){ if (!s

    素数10億まで3秒 - ita’s diary
    mooz
    mooz 2010/07/29
    "キャッシュに収まる位のブロックに計算を分割しその内側で素数pのループ回せばもっと速くなるかも?と思いやってみた。見事3秒で終わった!"
  • strtok関数の動作と文字列を部分文字列で分割する話

    C標準ライブラリには、strtokという文字列を分割(正確にはトークンを切り出す)するための関数があります。strtok関数は複数種の文字を区切り文字に指定できる一方で、文字列にその一部として含まれる文字列(部分文字列)で分割することはできません。 ここでは、strtok関数の仕様とやや詳細な動作を示し、C標準ライブラリには直接は存在しない機能である「部分文字列での文字列の分割」を実現する方法を考えます。部分文字列を区切りとして文字列を分割すること自体は別に難しくありませんが、分割後の文字列の切り出しの方法や切り出した後のポインタの持ち方には検討の余地があります。

    mooz
    mooz 2010/07/23
    2 回目の呼び出しからは 1 番目の引数に NULL を指定すれば, 前回切り出した文字列に続く文字列を処理できる.
  • PIE (位置独立実行形式) を作成する - bkブログ

    PIE (位置独立実行形式) を作成する 通常、PIC (位置独立コード) は共有ライブラリに用いられますが、Linux 上で最近の GCC, Glibc および GNU Binutils を使うと、実行ファイルも位置独立にすることができます。記事では PIE (位置独立実行形式) を作成する方法と特徴を紹介します。 PIE の基 それでは例を見てみましょう。次のようなファイル foo.c があるとします。 #include <stdio.h> void foo() { printf("hello\n"); } int main() { foo(); return 0; } このファイルを -fPIE というオプションをつけてコンパイルし、 -pie というオプションをつけてリンクすれば PIE を作成できます。出来上がったファイルは普通に実行できます。 % gcc -c -fPIE

    mooz
    mooz 2010/07/17
    -fPIE. 共有ライブラリのように相対アドレスで. どの位置にマップしても動く. -rdynamic で実行ファイル中に動的リンク用のシンボルを残す.
  • 本の虫: 邪悪なC形式のキャストにしかできないこと

    注意:邪悪で汚らわしいC形式のキャストは、いやしくもC++プログラマたる者は、使うべからず C++では、玉虫色のC形式のキャストの機能を、三つに分割した。static_cast、reinterpret_cast、const_castである。しかし、この三種のキャストでは、C形式のキャストを完全に代替できないという声をよく聞く。曰く、「どうしても書けないキャストがある」と。 それはよく聞く話だが、では実際にどのようなキャストなのかということは、誰も審らかにしない。誰も知らないキャストであれば、特に使えなくても問題ないはずだ。ただし、「C形式のキャストならばできるキャストが、新しいキャストを組み合わせてもできない。どんなキャストかは知らないが、とにかくできないと聞いている。故に新しいキャストはクソだ」などという論調で、C++の改良されたキャストを使わぬC畑の外道がしゃしゃり出てくるのも困る。そ

    mooz
    mooz 2010/07/06
    キャストについて
  • sequenceを線形時間でfoldする - www.kotha.netの裏

    プリプロセッサメタプログラミングの話。 Cプリプロセッサ上で値の列を表現するためのデータ構造の一つとしてsequenceというのがある(Boost.Preprocessorの用語)。 他の言語でいうリストや配列に似たもので、以下のような形をとる。 (0)(1)(2)(3) /* 0から3までの整数のsequence */ (signed char)(short)(int)(long) /* C++の符号付き整数型のsequence */ なお、空のsequenceは扱いがいろいろ面倒なのでこの記事では無視する。 リスト風のデータ構造ならばもちろんfold演算が欲しい。Cプリプロセッサ上のプログラミングは関数型プログラミングであることを考えればなおさらだ。 このためにBoost.PPにはBOOST_PP_SEQ_FOLD_LEFTとBOOST_PP_SEQ_FOLD_RIGHTというマクロが

    sequenceを線形時間でfoldする - www.kotha.netの裏
    mooz
    mooz 2010/07/05
    プリプロセッサメタプログラミング. プリプロセッサ上で値の列を表現する sequence を fold したり map したり.
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

    mooz
    mooz 2010/06/30
    興味深い意見.
  • C言語におけるメモリプールの実現方法 - S.T.K Wiki

    メモリプール メモリプールとはあらかじめまとまったメモリ領域を一括で確保した後に確保したメモリ領域を使ってメモリにデータを割り当てる手法、 もしくは確保したメモリ領域をプログラムから効率的に使用/管理できるようなアルゴリズム/データ構造を指す。 CようにGC(ガベージコレクション)を持たない言語ではヒープ領域から確保したメモリの解放はプログラマの責任で行う必要がある。 しかし、実際にCやC++でプログラミングしたことがあるならわかるように確保したメモリを適切なタイミングで 解放するのはとても難しいとまでは言わないまでもあまり簡単なことではない。 単にfreeを呼び出すのを忘れたり、もしくはリストやツリーのような少しでも複雑なデータ構造を扱う際に割り当てられたメモリを適切に解放できずにリークしてしまうようなことは普通に起こりうる。 モダンなOSではプログラム終了後にそのプログラムに割り当てら

    mooz
    mooz 2010/06/16
    メモリプールについて. Linux には mpool という機構もあり. Apache Portable Runtime や nginx でのアラインメントについて.