01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
NLP シンポ |
定 例 研 |
帰省など |
明日から帰省します。でも、単なる休養じゃない。
久しぶりにスーファミでモノポリー2をやる。 腰痛だったら素直にゲームかな。 今日は例のゲームの発売日だそうで、隣のNT氏はさっそくやってる。
やっぱさあ、結局、頼りになるのは腹筋だわ。まじめに鍛えよう。
引続き、SUFARY vs ? の比較実験を行っています。 以下、知らない人には難しく見えるけど実はどうってことない話。 長年、Cでプログラムを組んでいるけど、今までメモリの確保に失敗するという事態に遭遇したことが無かった。 実際、WSでプログラム作るときに、malloc が失敗するなんてこと考えないし、 考えたとしても「malloc 失敗 → exit !」という一般的なコーディングだった。 今日、負荷実験ということで、同時に検索エンジンを数十個起動してたら、 メモリ確保(malloc)失敗が続出。これじゃちゃんと評価できない! 今までのコーディングはこんな感じ。
メモリ確保ができないくらいで、あきらめて終了してしまちゃ困るわけ(困るのは負荷実験のときだけという話もあるけどね)。 そこでメモリ確保に失敗したら、1秒待ってもういちど挑戦というようにコーディングした。こんな感じ。hoge = (char *)malloc(HOGE_SIZE); if(hoge == NULL){ fprintf(stderr,"allocation failed.\n"); exit(1); }
待つ時間を増やしていく(倍にしていくとか)ようにしたほうが現実的かも。 どっかで聞いたことあるような話だね。 ともかく、これでなんとか動くようになって、実行時間の測定ができました。 良かった、良かった。 でも、メモリ確保できてなかったら sleep してるだけだから測定結果に意味あるのかなあという疑問も湧いてきます。 また、非常に危険なループなのでコンパイルの際に選択できるようにすべしとの意見もあります。まあ、そうだね。 で、売りもののプログラムではどうやってメモリ管理しているのかなあというのが疑問なのです。 比較対象のOT5(売りものです)は、 いくつ立ち上げても「メモリが足りない」なんて泣き事言わず各自黙々と働いているんだよな。偉いよなあ。while(1){ hoge = (char *)malloc(HOGE_SIZE); if(hoge != NULL) break; sleep(1); }
コタツで、SUFARYとOTの負荷実験をしています。 一回始めると数十分はかかるから、その間寝転んでいられる。 研究室じゃちょっと大変。 まあ、こんな状態なので、集中したプログラミング作業ができません。 やりたいこといっぱいあるのになあ。
さっきの実験中に裏で他のプログラムが動いていたので、正確な値は得られず。 見通しすらたたん。やっぱ、実験用のスタンドアロンのマシンが欲しい。 結局、あきらめて、早朝にやることにする。
さてさて、我々は時として、鳥のキウィが先かキウィフルーツが先かという些細なことに心を奪われがちである。 グレープとグレープフルーツの例を挙げるまでもなく、 キウィの方が先に決まっていると考えるのが妥当であろう。 しかし、キウィフルーツの方が鳥キウィより人間の生活に密接に関わっているし、 キウィは夜行性なんだから滅多に見ることもなさそうで、 キウィフルーツよりも先に名前が付くなんてことは考えられない。 どうもおかしい。 まあ、調べてみたら謎はすぐ解けた。 キウィはニュージーランドの森林に住む夜行性の飛べない鳥 ( キウィはマオリ語 ) で昔からの身近なやつなんだけど、キウィフルーツはそもそもが中国原産で、 ニュージーランドで品種改良したというものなのだ。 ああ、納得。
夕食はレトルトカレー + 先週のワインの残り + MM氏差入れリンゴ。 備蓄があって良かった。「備えよ常に」だね。でも、もう米が無い。
たつを |