メモ: Solarisにはいつの間にかlibmd5なんてのがある
自前プログラムでMD5の計算をする必要があるときにはRFC1321の付録コードを使っていたのだが、あるとき、Solaris9にはlibmd5.soなんてのがあることに気付いた。
これをlddしてみると、さらにlibmd5_psr.so.1をリンクしている。
アーキテクチャ依存チューニングされたコードになってそうだ。
試しに、固定データブロックをMD5計算しまくるテストコードを書いてベンチマークしてみると、ブロックサイズが16や32ならRFC1321付録コードの方が速い(多分、ダイナミックリンクの呼び出しオーバヘッドで)のだが、64以上ならlibmd5の勝ち。
ブロックサイズの大きい方の極限ではUltraSPARC IIIiなら2倍、x86でも1.5倍ほどスループットが出ている。Solaris9でも10でも傾向は変わらない。もっとも、x86やT1だとブロックサイズが小さくても最初からlibmd5の勝ちだが。
さらにUltraSPARC-T1でもこの傾向は変わらない。もっと段違いの数字が出るかと思いきや、T1プロセッサ内蔵のMAU(暗号アクセラレータ)はMD5計算には役に立たないらしい。
但し、クロックが遅い上にさらに時分割されてる遅さが逐次では(いつもの通り)出てしまうものの、ハードウエアスレッド数までなら「殆ど遅くならない」というお約束もまた分かりやすく現れるので、T1のほうが有利になる場面というのもあるだろう。今回の事例では1GHz 8coreのT1プロセッサが2.2GHz 4coreのOpteronに対して約1.5倍のスループットを出せるようだ。
なお、コンパイルにはGCC 4.1.1を使った(ちょっと古い)。
SunStudio CやらIntel Cやらを使うとまた傾向が変わるのかどうかは調べてみていない。
MAUがMD5をサポートしているT2プロセッサでどれくらい性能が伸びるのか、誰かベンチマークしてくれ。
これもメモ。
Solairs10上でGNU Screenをコンパイル
で、↓これは何のためだったかというと、これ。
- UNIXしま専科: GNU screen make時にsolaris10上でエラー
どっちかっつうと、misc.c
の619行目
setenv(var, value);
を編集しちゃうよりは、この部分をくくってる条件マクロの方を編集するべきではないかと。
diff -ur screen-4.0.3.org/misc.c screen-4.0.3/misc.c --- screen-4.0.3.org/misc.c 2003-12-05 22:45:41.000000000 +0900 +++ screen-4.0.3/misc.c 2008-07-21 17:55:44.950202000 +0900 @@ -613,7 +613,7 @@ */ # endif /* NEEDSETENV */ #else /* USESETENV */ -# if defined(linux) || defined(__convex__) || (BSD >= 199103) +# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun__) setenv(var, value, 1); # else setenv(var, value);
補足すると、Solarisにsetenv(3C)
が備わったのはSolaris10以降なので、SunOSバージョン識別は結局不要で、条件分岐としてはこれでよかった。
Solaris9以前ではputenv(3C)
が使われるのでこれまで問題にならなかったわけだ。
メモ: ActivePerl 5.8.xでlibxml系モジュールを使う
- Charsbar::Note: ActivePerl 5.8.xでlibxml系モジュールを使う
ActivePerlはWin32ネイティブで、CygWinと違ってGCCがあればというわけにもいかず。
ActivePerlにはppmなるパッケージ管理ツールがあるってことを実は初めて知った。
Windows Vistaのエクスプローラでファイルを複数選択できない
何がトリガで出来なくなったんだが分からないのだが、エクスプローラ内で複数のファイルを選択することができなくなった。
マウスをドラッグして四角で囲んだりCtrlやShiftを押しながら複数を選択するという操作をしようとしても最後にクリックした一つしか反転表示にならない。
Ctrl-Aだけは生きているようだ。
レジストリ修正で対応するらしい。
- http://forums.microsoft.com/TechNet-JA/ShowPost.aspx?PostID=1239869&SiteID=36
- http://mysite.verizon.net/res18hr7/FixSingleSelect.zip
SP1で治るんだろうか。