タグ

2011年1月11日のブックマーク (2件)

  • シンボルとは何か その1(後編) - 文字列のintern - 世界線航跡蔵

    シリーズ・RubyのSymbol 。だいぶ空いてしまったけど、気が向いたので続きを書く。 前回 は文字列の同一性について復習したのであった。 意義 そう言うわけで、文字列においては同一性と同値性は異なる。特に、Rubyの場合は同じリテラルも評価する度に異なるオブジェクトを生成する。ところが、これは不便な場合があるわけだ。 まず、文字列の同値性比較はコストがかかる。長い文字列を比較にするには時間が掛かる。保持しておくにも長い文字列だったらメモリーをう。更に、毎回リテラルからオブジェクトを生成するとしたら、無駄なケースが多々ある。Railsに良く出てくる疑似名前付き引数みたいなやつ。 some_method "a" => 1, "b" => 2, "c" => 3 おい、この箇所を通る度に一々文字列のメモリー確保してオブジェクト構築するのか? その背後ではパフォーマンス厨なら誰もが恐れる m

    シンボルとは何か その1(後編) - 文字列のintern - 世界線航跡蔵
    yohei-a
    yohei-a 2011/01/11
    "シンボルとは何か。答えの1つはこれだ。"
  • FreeBSD/Linux C言語 動的ライブラリ dlopen/dlsym/dlclose/dlerror

    このドキュメントの内容は、以下の通りです。 C言語で共有ライブラリを動的ロードする方法 共有ライブラリのサンプル 共有ライブラリのコンパイル 共有ライブラリをロードするプログラム 共有ライブラリをロードするプログラムのビルド 実行 C言語で共有ライブラリを動的ロードする方法 FreeBSDやLinuxなどのUNIXで共有ライブラリを動的にロードするには、 dlopen()を利用します。 共有ライブラリのサンプル #include <stdio.h> int hello (int i) { printf ("Hello, %d\n", i); return (i + 1); } 共有ライブラリのコンパイル gcc -shared hello.c -o hello.so 共有ライブラリをロードするプログラム 1. dlopen()で共有ライブラリ hello.so をロードします。 2. dl

    yohei-a
    yohei-a 2011/01/11
    "dlsym()で共有ライブラリのhello()関数のポインタを取得します"