私的メモ
気が向いたときに更新。(2003年12月版)
ipmsg
・電子認証
・NAT/FW 越え通信
・C/S化
・認識精度向上+認識用パケット低減
・多言語同時表示
などをつらつら考えたり。
全てを満たすには、新プロトコルにしないとダメかな…。
映像の世紀
何気なく、NHK「映像の世紀」の類いの番組に出くわすと、ついついずっと
見てしまう。何ともいえない感じになりつつ、同時に、自分が歳を取った
ことを自覚してしまう今日この頃。
クルーグマンのこんな本を買おうかなと考えつつ、日本もアメリカも、首相や
政府のレベルは、結局、その国の民度の反映なんだろうな、とも思ったり。
年末
今年もそろそろ終わり。
いろんなことがあったな。
Pentium 4
blowfish の実装でいろいろと速度実験していると…
CBC モードでの feistel 構造のように、前回の結果に依存する演算が大量
に存在する場合、Pentium 3 系に比べて、同一クロックだとむしろ遅い模様。
EBC モードにし、手動で演算を並べ替えて、(追記:要はインターリーブ)
ブロック数 * (1ブロックを16ラウンド)
という形から
ブロック数/n * (16ラウンド * (nブロックをそれぞれ1ラウンド))
という形に変更すると、少なくとも n=8 までは速度がぐんぐん伸び、
実行速度は n=1 の 4倍に。
(補足:ぜんぜん正確な例ではないけれど、イメージ的には、
a++;a++;a++;a++; b++;b++;b++;b++; c++;c++;c++;c++; d++;d++;d++;d++;
とするよりも
a++;b++;c++;d++; a++;b++;c++;d++; a++;b++;c++;d++; a++;b++;c++;d++;
の形の方が大幅に高速になった。実際のテストでは、単純な increment 部分
が blowfish 各ラウンドの攪拌処理に相当)
Pentium 3 / Athlon では n=2-4 でほぼサチり、およそ 2 倍強程度。
(とはいえ、Pentium-M/1.2G と Pentium 4/2.26G との最速結果の比は
1:1.5 程度しかない)
K6 では、n=1 が最速。n が増えるにつれ、徐々に遅くなる。
Pentium 4 のパイプラインがいかに埋まっていないか、の証明かな…?
それから、バイトオーダー変換部分を C言語→インラインアセンブラ(bswap)
に変更すると、15% 程度速くなる模様。(バイトオーダー変換は、feistel 構造
に入る前と出てきた後の、計2回実行しているだけなのだが)
Python
Python で自作してみた amrita もどき。
ループしたい範囲と、個々のタグの範囲は違うしなぁとか、DreamWeaver
からも問題なく扱えるようにしたいなとか、直感的に理解しやすいように
などと、つらつら考えるうち、結局、全然違う文法にしてしまった。
・値置換は $val の形。
・拡張タグとして <ex ... > を使う。
・ループ範囲指定は、<ex loop="loopname"> ... </ex> という形。
・置換用のデータは map(連想配列)。ループは map の list として表現。
(map - list - map - ... の繰り返しで任意次元のネストが可能)
・指定ブロック範囲を表示するかどうかの指定は、<ex disp=$val> ... </ex>
・テンプレートのインクルード指定は、<ex include="xxx.html"/>
その後、いろいろ調べてみると、Perlの HTML::Template というモノと基本構造
が良く似てる印象。(とはいえ、かなりサブセット)
ひさびさ更新
ひと月以上放置プレイ…書こうかと思うネタは時折見つかるものの、
手動更新がいささか面倒になってきている模様。
asahi-net で cgi が使えるといいんですけどね…。
11月のメモ index 1月のメモ
ご意見・ご感想はこちらまで:
..up menu
Copyright(C) 2003 SHIROUZU Hiroaki