Entries from 2010-08-01 to 1 month

memcpy が遅い2

ページフォルトハンドラのどこが遅いかを調べるために RDTSC を利用した stat の仕組みを作った。その結果 空き page frame の検索に利用している Bitmap が遅い事が判明。確かに naive な実装 だ。色々と調べたところChrominium の bitmap.h - src/net/disk…

memcpy が遅いとは

Mona の RAM Disk I/O が遅いので調べていたら memcpy だった。これはオンデマンドページングというかページフォルトハンドラだろうなと推測。同じ memcpy を 2 回実行すると 2 回目はとても速いので当たり。 しかしページフォルトハンドラのどこで遅いかを…

Mosh on Mona と Boehm GC

Mosh のテストを Mona 上で走らせるとたまに Boehm GC の mark_from, mark_some で落ちる。Mona 上の Boehm GC 自体は旧 Scheme シェルで動作している実績がある。 Linux 上の Mosh と GC_FLAGS を比べてみると LARGE_CONFIG を有効にしていなかったことに気…

ひげ太帰省から戻る

妻の実家に帰省していたひげ太(1歳2ヵ月)が戻ってきた。自分は仕事があったので5日前に戻ってきていた。その間に髪を切ってしまったので、偽父ちゃん判定を食らい大泣きされた。最近人見知りが直ったので安心していたのだが、偽父ちゃん(父ちゃんを期待し…

R6RS Scheme のパッケージシステム UCL Package を試す

R6RS Scheme のパッケージシステム UCL Package が登場したので試す。 UCL Package Repositoryに行き手順通りに進める。Mosh にも対応。ありがたい。 Bootstrap のインストール 一度やれば OK 。 % cd % cd src % wget http://ucl.willdonnelly.net/ucl-boot…

Cost of of call on Erlang 2

Added parallel benchmarks http://github.com/higepon/Erlang-cost-of-call . call fun0 : 7 msec call fun1 : 7 msec gen_server:call fun0 local : 320 msec gen_server:call fun1 local : 318 msec gen_server:call fun0 local 10 proc : 544 msec gen_s…

読書 3 冊

容疑者Xの献身は、確か映画化されていたと思うのだが見ていない。先に原作を読めて良かった。予想していなかったトリック(?)だったので結構衝撃を受けた。 レイクサイド (文春文庫)posted with amazlet at 10.08.21東野 圭吾 文藝春秋 売り上げランキング…

Mosh on Mona passed R6RS test suite

自作OS上で動かす R6RS 処理系でテストを全て通すのは結構大変だった。おかげで Mona がだいぶ強くなった。 最後の砦は file open の create と truncate だった。 今日は暇だったので作業は、Smiley Hackathonに参加してコードを書いた。主催者id:acotieさ…

strtod

.3 とかが 0.0 になる気がする。

最近の Mosh on Mona

45 of 8917 tests failed. な状態。もう少し。 追記 11 of 8917 になった。

Cost of call on Erlang

Erlang R14A (erts-5.8) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:true] Linux suneo 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 08:03:28 UTC 2010 x86_64 GNU/Linux results call 100,000 times. call type msec cal…

qemu 0.12.5 に上げたら遅くなったと思ったら

起動時に明示的に -enable-kvm してやらないといけない仕様になったようだ。0.12.3 では /dev/kvm があれば自動で有効になっていた。

元気いっぱいの夏

数μ秒のwait

「数μ秒のwaitってどうやるんだろう?」と長年気にしていたけど調べなかった謎について調べた。 inp(0x80) がほぼきっかり 1μ秒で返ってくる事を利用するそうな。そういえばそういうコード見た事あったな。

ひげ太が犬を認識するようになった。散歩の犬とすれ違うと「わんにゃん」と呼びかける。惜しいな。

英語の発音 ザジングルズ レベル85基礎筋肉編 1周目終わった

英語の発音練習のために始めた「英語の発音 ザジングルズ レベル85基礎筋肉編」の1周目がやっと終わった。記録によると4/13に購入したようなので 4ヶ月かけて 30 日分の課題をこなした事になる。さぼったから時間がかかったわけではなくて、平日のみ1日の課…

20歳のときに知っておきたかったこと

id:kawasaki の書評を見て気になっていたので「20歳のときに知っておきたかったこと スタンフォード大学集中講義」を読んだ。たくさんの事例から筆者が学んだ「知りたかった事」が盛りだくさんで、20歳どころか30歳を超えた自分でも学ぶところが多かった。 …

select

#!/usr/bin/env escript main(_) -> Ets = ets:new(store, [public, ordered_set]), ets:insert(Ets, {"1", "val1"}), ets:insert(Ets, {"2", "val2"}), ets:insert(Ets, {"3", "val3"}), ets:insert(Ets, {"4", "val4"}), ets:insert(Ets, {"5", "val5"}), …

C++の class template を使えば static メンバの実体がヘッダファイルに書けるカラクリ

c++

C++の class template を使えば static メンバの実体がヘッダファイルに書けるというテクニックがある。考えてみると不思議な動作に思える。だって分割コンパイルしたら実体が複数個出来そうじゃない?。この裏側で起こっている事を実験前に予想して試したと…

Mona に boost::scoped_ptr 移植した

Mona に boost::scoped_ptr 移植した。Google Chrome の scoped_ptr だったら1ファイルで済みそうだし boost:: も書かなくて済むし良いかなと思ったのだけど迷う。この辺のバランス感覚を持ち合わせていない。

IME 対応一区切り

変換候補最長マッチに カタカナ入力に対応 見た目を整える などして IME 対応はひとまず終り。 当初の目的であった最低限の「日記書き込み」と「twiter投稿」達成。 細かい部分は日常使いつつ改善予定。

はろー

Monaから書いてみる。

virtio block driver 書くぞ

Mosh on Mona が遅いのは I/O なので virtio block driver 書く。 ドライバを TDD で書くというのが今回のチャレンジ。