タグ

c言語に関するxnightsのブックマーク (6)

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (1) google-perftoolsとは | エンタープライズ | マイコミジャーナル

    google-perftoolsはGoogleによって提供されている、C/C++アプリケーションのパフォーマンスを改善するための開発ツールキットである。2005年3月に初めて公開され、およそ4年を経て7日に正式版がリリースされた。The BSD Licenseの下で提供されており、LinuxをはじめとしてFreeBSD、Mac OS X、Solaris 10、Windows XPなど、各種プラットフォームでの動作が確認されている(ただし、Linux以外については一部機能を除く)。 google-perftoolsには次に挙げる4つのツールが含まれている。 高速メモリアロケータTCMalloc ヒープチェッカー ヒーププロファイラ CPUプロファイラ TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、テスト

  • 可変長引数

    このページはInternet ArchiveのThe Wayback Machineからコピーしてきたものです。 →詳細 10 可変長引数 イントロ 何が問題か デフォルトの可変引数サポート %varargsを用いた引数置換 可変引数とタイプマップ libffiを使った可変引数ラッピング va_listのラッピング C++に関する問題 考察 (別名、「恐い、恐いお話」) この章では、可変長引数を取るラッピング関数を扱う際の問題について説明する。 例えば、Cのprintf()に類する関数に対してラッパーを生成するような場合だ。 このトピックは高度なので、独自に章を分けておく価値がある。 実際、可変引数のサポートはこれまでも頻繁に要求があったが、SWIG-1.3.12で初めて追加された。 他のほとんどのラッパー生成ツールは、賢明にもこの問題については避けて通ってい

  • GCC some extensions

    gcc(Gnu C Compiler)の拡張文法 [警告!] C/C++言語初心者はこのページを読まないでください。 このページではgcc独自のC/C++拡張文法について解説します。 これらの拡張文法が可能にする機構は確かに便利なのですが、 もちろんANSI規格に従っていないので、一般的には使うべきではありません。 C/C++言語文法を学び始めている初心者はこれらgcc拡張文法を 知るべきではありません。C/C++言語を正しく理解する上で大きな 支障となります。 C/C++言語を十分に熟知した者は、gccがこのようなこともすることを 「雑談」として知っておくと楽しいかもしれません。もちろん 実戦に使うべきではありませんが。しかし初心者が偶然に、これらの 機能を使ってうまくいく場合がありますので、そのような初心者を 見つけたら、それが標準規格ではないことを注意してください。 配列変数をコピー

  • 32bitと64bitのサイズの違い(C言語): のぼメモ(仮)

    32bitと64bit環境ではサイズが違うのでメモメモ。 色々な型に対してsizeof()関数を使ってみた結果は以下の通り。 OS間または32bit/64bit間でサイズが変わる型を使う場合は移植に注意が必要。

    32bitと64bitのサイズの違い(C言語): のぼメモ(仮)
    xnights
    xnights 2008/10/19
    64bit環境ではintは64bitになるもんだと思ってた。64bit windowsではlongも32bitのままなのね。
  • JavaScriptCore (Safari の JavaScript エンジン) を使って C 言語から JavaScript を実行する - IT戦記

    はじめに JavaScriptCore (WebKit/Safari の JavaScript エンジン) を C 言語に組込む方法を調べてみました。 解説はソースコード中のコメントを見てください。 まず 以下のコードを hoge.c とかいう名前で保存します。 #include <JavaScriptCore/JavaScriptCore.h> static JSValueRef jsGlobalPrint( JSContextRef ctx, JSObjectRef jobj, JSObjectRef jobjThis, size_t argLen, const JSObjectRef args[], JSValueRef* jobjExp); int main(int argc, char** argv) { if (argc == 1) exit(0); // ---- グローバル

    JavaScriptCore (Safari の JavaScript エンジン) を使って C 言語から JavaScript を実行する - IT戦記
  • 1