2009年5月アーカイブ

時間計測

| コメント(0) | トラックバック(0)

仕事でJavaプログラムのパフォーマンスも改善して欲しいという話になった。

プログラムのパフォーマンスを改善する場合、闇雲にチューニングするのではなく、まず現状のプログラムのどの辺が重たいのか調べなければならない。たった数行のコードが全実行時間のほとんどを占めている場合もあるからだ。

対象のシステムはjavaで作られており、1メソッド呼び出しで前回の呼び出しからの実行時間をログに吐き出すようなクラスを作っていたのだが、SystemクラスにnanoTime()という便利そうなメソッドがあることを今更知った。実行時間の取得は当たり前のようにcurrentTimeMillis()を使っていたので衝撃だった。winAPI経由だとどう頑張っても16~15ms以下の精度は出ないからだ[0]。昔、この問題で大学同期のdesutanが苦しみ、自分もCでアセンブラを組み込んでミリ秒以下の精度を出そうと頑張っていたのがウソみたい。

nano秒とか体感できネーヨと思うが、実際に使ってみると確かにcurrentTimeMillisよりは精度があるようだ。1,000,000 倍して[ms]に変換してみたが2msとか15ms以下の値が取得できた。調べてみるとwindowsの場合、μ秒オーダーらしい。[1]
時間取得そのものにかかるオーバヘッドに関してもcurrentTimeMillisよりnanoTimeの方が優秀みたい。今後はこっちを使うようにしよっと。IBMも勧めてるし[2]。

それにしても...

public static long nanoTime()

利用可能でもっとも正確なシステムタイマーの現在の値をナノ秒単位で返します。

このメソッドは、経過時間を測定するためだけに使用できます。 システムのほかの概念や壁時計の時刻に関連していません。返される値は、固定された任意の時間からの経過時間 (ナノ秒) です。将来的に、値が負の数になる可能性があります。このメソッドは、ナノ秒単位の精度を提供しますが、必ずしもナノ秒の正確度ではありません。値の変更 頻度は保証されません。約 292 年 (263 ナノ秒 ) を超える連続した呼び出しの差異では、数値のオーバーフローにより経過時間が正しく計算されません。

ナノ秒単位でも63ビットあれば292年分を表現できるんだな...。約 292 年後の心配をしてくれるsunはエライ。おそらくこの中に含まれていない先頭1ビットが"将来的に、値が負の数になる可能性があります。"って部分と関係しているのだろう。

参考
[0]Java/リフレクション/currentTimeMillisとnanoTimeを選択 - discypus
[1]時間を計測する
[2]確実な Java ベンチマーク: 第 1 回 問題

25

| コメント(0) | トラックバック(0)

26日で25を迎えた。

20代も半ばと感慨深い。昔の人が言うところの折り返し地点だ。
しかしその割には人間的にまだまだ成長してないと思われる部分も多々あるので、今後とも精進したい。

---
金曜日、仕事を終えて同期のO君と買い物へ出かけた。
イヤホンがこの間壊れてしまい、片方だけ音が出なくなってしまったので、新調することにしたのだ。
買ったのはマクセルのHP-CN21。今まで使っていたaudiotechnicaのイヤホンも同価格で売られていたが、また同じモノというのもなぁ...ということで変えてみた。見た目もなんか良いし。

イヤホンを買った後は本屋に行き、バガボンドの最新刊と(かなり迷ったが)↓を買った。
se_acc.jpg
あまりお金関係の話には興味が沸かないのだが、現在メインで行っている業務がコレ関係なのに、用語をよく理解もしないままというのは流石によろしくない。本をパラパラとめくり、普段よく目にする用語が多く載っていたので買うことにした。頑張って読み進めるようにしたい。

最近寮に引っ越した同期が居て、彼の部屋に置く家具を部署内同期全員で一緒に買い物するということになったのだった。
が、まさかの寝坊。初っ端からマジすみませんでした (´Д`ι)
(最近、私の目覚まし時計を私の知らない間に勝手に止める者が居るから非常に困る。)

---
遅刻した上に、部署同期から少し早めの誕生日プレゼントを頂いた。
20090523_tie.jpg
淡いピンク色のネクタイは一つも持ってなかったのでナイス!
あまりにネクタイをしないことで一部の間では有名な私ですが、これを機にネクタイを極力使おうと思った次第であります。

昼食をみんなで済ませた後、レンタカーでIKEA港北店と近くのニトリに行き、家具を物色。
IKEAのレイアウトが船橋店と非常によく似ている(というか同じか?)のにビックリ。ららぽーとが近くにあるというのもそっくりだね。

IKEAで私も同期に便乗してラグを買った。PC机の下がフローリングでちょっと何かを敷きたかったのだ。
正直、どのぐらいの隙間がサイズぴったりなのか測っておらず微妙だったが、こんくらいのサイズだろうと思い切って買った。

家に帰っておそるおそる敷いてみると
20090523_under.jpg
ジャストフィット!非常に運が良い。

---
買い物の後、最後はみんなで焼き肉食って解散。一日中外にいたなぁ。疲れたが、その分楽しかった。

以前紹介したヤツ。ちょうど一ヶ月か。自分にしてはそこそこ速いペース。相変わらず面白いし読みやすいというのもあったかもしれない。翻訳本なのにジョークが面白いのだから翻訳者の青木さんはすごい方だと思う。


自分が特に面白いと思ったのは...
1章 はじめてのBillGレビューのこと
8章 Javaスクールの危険(以前web上で読んで感想書いたな)
18章 Microsoft Officeのファイル形式はどうしてあんなに複雑なのか(およびその回避方について)
20章 エビデンスベーススケジューリング
22章 君のプログラミング言語で、これ、できる?
23章 間違ったコードは間違って見えるようにする
34章 ラクダとおもちゃのアヒル
36章 優先順位を決める

いくつかはlocal.joelonsoftware.comに無料で翻訳版が公開されている。気になるのがあったら一読をお勧めする。
[1][8][22][23][34]

この中でも特に興味が湧いたのは20章のエビデンスベーススケジューリングだ。今後は積極的に見積もりと実績をため込むようにしておきたいと思った。

同期のみの研修は楽しかったが、少し飲みすぎた。今週は少し自粛する。

---
以下休日に見ていたもの。
DSでpopcorn演奏。再現率スゲェ。

「プログラムは思った通りに動かない。書いた通りに動く。 」って誰が発した格言なのだろう。
[プログラミング格言集]

以下を、同期のひよこちゃんに捧げる。
[宇宙のゾッとする怪現象BEST-5 : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ]

5/3は大学同期のdesutanと秋葉原に行き、大きめの液晶モニターを買うことにした。

買ったのはMITSUBISHIのDiamondcrysta WIDE RDT223WM-S
ヨドバシで買おうかと思ったが、T-ZONEでGWセールをやっていて1万円も安く買うことが出来た。
昔じゃ三菱の液晶なんて高くて手が出せなかったけど、今じゃ22inchのワイドが3万円以内で買える時代なのねぇ。

XGA(1024×768)からいきなりWSXGA+(1680×1050)にアップグレードしたもんだから世界がすげー変わる。eclipseの画面が広すぎてヤバイ。

試しにゲーム(tce)をWSXGA+設定やってみたが、まぁ広いこと広いこと。
tce_WSXGA+.jpg

あとこの機種、省電力なのも良い。
自分の場合、デフォルト設定じゃ眩しすぎて大抵輝度を落として使用するのだが、それを落とすためにecoモードとやらを「中」に設定したら40w付近から29~19wに落ちた。白色が多く表示されればされるほど消費電力は落ちるようだ。ネットサーフィン中は大抵19wなので以前使ってた15inchディスプレイとほぼ変わらねぇ...

ワイドだとどうしても左側が作業領域、右はじっこがmusicプレーヤやIRC置き場になってしまう。一台のワイドディスプレイでも最大化できる領域をデュアルディスプレイのように自動で分けられないものだろうか?と思い、さっき調べてみたのだが、それっぽいのが「ナナオのモニタで画面分割ソフトウェアがダウンロード可能に。「EIZO ScreenSlicer」  デジタル@備忘録」しかなかった。2台目以降なら他機種でも大丈夫らしいが、EIZOの液晶とはまたハードルが高い...。
ワイドモニターがあるとこーゆう需要ってありそうだけど他によさげなソフトウェアはないもんかねぇ...。

FreeBSD検定 - Yahoo!みんなの検定
7/10でギリ合格。そーいえば最近あんまり触れていないなぁ...。

5/2は小学校のミニ同窓会だった。現在、mixi上で連絡が取れ合うもの同士がメインで集まった。
中学か高校の境目あたりでも小学校のクラス同窓会は一回開催されたのだが、今回のメンバーはその場では会えなかったので、本当に久しぶりの再会だった。

集合場所が小学校の校門前というのはナイスだ。
せっかくだから前の家から出発し、当時の通学路を歩いて学校に行くことにした。
意外と周りの景色は変わってない。せいぜい変わったのは視点の高さと歩くスピードぐらいか。
当時30分を要した通学路も今じゃゆっくり写真を撮りながら歩いても20分ぐらいで着ける。

誰も居なかったので、しばらく校門の前に立っているとみんな集まってくる。
面白かったのは昔の面影がみんな残っていたので、誰だかすぐ分かったという点だ。

居酒屋に移動して1名追加、2次会に移動して更にもう1名と。やっぱりみんな変わってないなぁ。
まぁ、かく言う自分もみんなからしたら大して変わってなかったようだけど。

一人、物理専攻の院生になった友達が居た。物理を学ぶキッカケを辿っていくと、オレが教室で読んでいた空想科学読本が原因だったらしい。オレは高校、大学生の時にsiの影響を受けつつ、なんだかんだでプログラミングを生業とするような職に就いたのだが、オレも他人の人生に影響するようなことをしていたのか。人というのは互いに影響しあっているのだと思う。

次回は10月に行うことになった。今回来れなかった友達に次こそは会いたい。

GW一日目

| コメント(0) | トラックバック(0)

自室の片づけを開始。漸く引っ越し屋の段ボールが0になった。

desk.jpg
机の上も綺麗になったし、プラモも作れる状態になった。
早速近所のプラモ屋に行って接着剤を買ったのだが、タミヤがウェザリング用のキットを出していてすげーと思った。
タミヤウェザリングマスター&スティック
スノー系でも買って冬季迷彩に挑戦してみますかね。( ´p`)

戦車繋がりで。
ファミコンウォーズDS2 - Lyoのニコニコ動画のリンクを貼るだけの簡単な日記 - ニコニコ部
絵が好みだなぁ。日本語版はまだ未定らしいが、出たらDSごと買ってしまいそう。

このアーカイブについて

このページには、2009年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年4月です。

次のアーカイブは2009年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3