NAKAMURA Minoru の日記 (2008年3月)

先月の日記(2008年02月) 今月の日記(2008年03月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita



3/29 (土)

新横浜駅にキュービックプラザがオープン (公式)

新横浜駅に 3/26 に駅ビル「キュービックプラザ」がオープン。 オープン日には人が多すぎて気後れしたが、 三日目となった今日は会社のお昼休みに出かけてみる。

目的は8Fの三省堂。 広さは神保町の三省堂の2F分ぐらい。 狭くなった渋谷の Book 1st よりは品揃えはよいので、 これからは本を買いに東京方向に出なくてよくなるのが∩(・ω・)∩です。

とりあえず今日のところは何も買わずに、 会社に戻って仕事を続ける…


3/10 (月)

[備忘録] 水道料金を払った

12月・1月分の水道料金の支払い伝票を紛失して困っていたのだが、 区役所の水道コーナーで支払えるらしい。

午前中はお休みにして武蔵中原区役所まで支払い行った。 とりあえず水道を止められる事態は回避…


3/3 (月)

[Prog] libunwind-ia64 の実行速度

開発中のランタイムシステムに一種の例外機構を実装したいため、 シグナルハンドラからスタックの底にあるフレームを検査したり書き換えたりする必要に迫られている。 IA-64 でスタックフレームの操作を行いたい場合、 libunwindというライブラリがあり、 以前から少しづつ調べていたのだが (2006年8月31日2006年9月4日2007年12月8日)、 libunwind ライブラリは意外に遅いということにようやく気づいた。

下のようなプログラムの場合、 シグナルを生成して siglongjmp で戻ってくるまでに 1.4GHz の Itanium2 (Montecito) で約 2 マイクロ秒掛かっているのだが、 libunwind を使ってスタックフレームを巻き戻そうとすると 3 倍の時間がかかる。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <stdint.h>
#include <setjmp.h>

#define UNW_LOCAL_ONLY
#include <libunwind.h>

enum {
    REPEAT = 10000000
};

static sigjmp_buf buf;

uint64_t ia64_get_itc(void) {
    uint64_t res;
    __asm__ __volatile__("mov %0=ar.itc" : "=r"(res) :: "memory");
    return res;
}

static void signal_handler(int sig, siginfo_t* sig_info, void* sig_data) {
    unw_cursor_t cursor; unw_context_t uc;
    unw_word_t   bsp;

#if 0
    unw_getcontext(&uc);
    unw_init_local(&cursor, &uc);
    while (unw_step(&cursor) > 0) {
        unw_get_reg(&cursor, UNW_IA64_BSP, &bsp);
    }
#endif

    siglongjmp(buf, 1);
}

int main() {
    int i;

    struct sigaction act;

    sigemptyset(&act.sa_mask);
    act.sa_sigaction = signal_handler;
    act.sa_flags     = SA_SIGINFO | SA_RESTART;
 
    if (sigaction(SIGSEGV, &act, NULL)) {
        perror("sigaction error"), exit(1);
    }

    uint64_t before = ia64_get_itc();

    for (i=0 ; i<REPEAT ; i++) {
        if (sigsetjmp(buf, 1)) {
            ;
        } else {
            *(int*)0 = 1;
        }
    }

    uint64_t after = ia64_get_itc();

    printf("%ld\n", (after - before) / REPEAT);

    return 0;
}
時間(マイクロ秒)
シグナル送信 + siglongjmp だけ1.9
追加でスタックフレームを検査6.1

マイクロ秒単位の時間なので通常の使い方では問題にならないだろうが、 1秒間に数千回の呼び出しがあると考えると消費時間が馬鹿にならないナリ。


3/1 (土)

[Book] エイホ先生のドラゴンブックに二版が出ていたんだね

Alfred V. Aho 先生のコンパイラの古典的な教科書 コンパイラ 原理・技法・ツール (現題:Compilers: Principles, Techniques, and Tools)は 表紙にドラゴンの絵の書かれているためドラゴンブックと呼ばれているが、 この 2nd Edition が出ていたんだね。

表紙はやはりドラゴンだが 3D になって現代風になっているよ。

Book Cover Book Cover Book Cover
日本語 1st Edt. 英語版 1st Edt. 英語版 2nd Edt.

先月の日記(2008年02月) 今月の日記(2008年03月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp