LLDONの個人的趣向日記
バックナンバー

[先月] [目次] [来月] [最新版] [トップ]

2003年12月2日(火) ホッピー
昭和の香りがする麦芽飲料「ホッピー」
簡単に言えば、濃いノンアルコールビールを焼酎で割った飲み物です。
ビールが高かった時代に安価な代用飲料として飲まれたようなイメージをもたれがちですが、
独特の風味と爽やかさを持った、ビールとは別の良さがあると思うのですよ。

出す店も少ないんで、新橋あたりに行けば飲めるかな?と思っていたら
オフィシャルサイトがあって吃驚。

んで、早速買ってきました。黒ホッピー。
焼酎は安価で爽やかな「いいちこ」であわせてみる。
冷凍庫に常備してある凍ったグラスにいいちこを注ぎ、栓を抜きホッピーを注ぐ。
ここで決してかき混ぜてはいけない。

飲む……ウマー!
嗚呼、やっぱり良いですわ。
つまみはモツ煮と洒落込みたいところだけど、今回は鳥大根で我慢。
こういうこってりした煮物に良く合いますわ。
2003年12月10日(水) C++Builder + oo4o
Borland C++ Builder 5.0Proとoo4oで Oracleにアクセスするプログラム作成。
速度的に不満はなかったのだが、他の人が作ったVB+oo4oの速度をみて愕然。
VBの方が数倍速いのである。
よもや速度的に馬鹿にしていたVBに負けるとは……。

色々調べてみると、oo4oではOLEでアクセスを行うのだが、
VBでは

Dim OraSession As Object
Dim OraDatabase As Object
Dim OraDynaset As Object
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.DbOpenDatabase("ExampleDb", "scott/tiger", 0&)
Set OraDynaset = OraDatabase.DbCreateDynaset("select * from test", 0&)
Label1.Caption = OraDynaset.Fields("Field1").Value

でDynasetのFiledに容易にアクセスできるのだが、Builderでは

Variant OraSession;
Variant OraDatabase;
Variant OraDynaset;
Variant OraFld;
Variant OraVal;
OraSession = CreateOleObject("OracleInProcServer.XOraSession");
OraDatabase = OraSession.OlePropertyGet("OpenDatabase", "ExampleDb", "scott/tiger", 0);
OraDynaset = OraDatabase.OlePropertyGet("CreateDynaset", "select * from test", 0);
OraFld = OraDynaset.OlePropertyGet("Fields", "Field1");
OraVal = OraFld.OlePropertyGet("value");
Label1->Caption = AnsiString(OraVal);

としなければならないのだ。
このOlePropertyGetが曲者で、非常に遅い。
どの位遅いかというと、
24項目あるテーブルのデータを130件引っ張ってくる単純なクエリーを投げると、

VB+oo4o 160ms
BCB+oo4o 3600ms
BCB+ODBC 88ms
BCB+DOA 28ms

という位遅いのだ。
(DOAとはDirect Oracle Accessというコンポーネント)
SQLの実行が行われるCreateDynasetまでにかかる時間は80ms程度
其の後、OlePropertyGetが24*2*130=6240回呼ばれるのだが、これが諸悪の原因っぽい。
OraFldの呼び出しをループの外に出して、OlePropertyGetの呼び出し回数を約半分の
24+24*130 = 3144回にしてみると、2000ms程度まで高速化された。

しかし、他の手法に比べて圧倒的に遅いことに変わりは無い。
折角のoo4oという高速アクセス手法なのに……。
BCB-EnterpriseかDOAを買うのが良いんだろうけど、予算下りないしなぁ……。
2003年12月12日(金) HappyBirthday
おめでとう、よっきゅん。
彼女もすっかり大人の女性な年齢ですな。
というわけで、グラスを傾けつつDVDで彼女の元気な姿を眺めてます。

彼女に出会わなければ、こんなにどっぷりとこの世界にはまる事も無く、
割とあっさりと足を洗ったかもしれないと思う今日この頃。

乾杯!
2003年12月13日(土) 続 C++Builder + oo4o
12/10の日記で書いたBuilderの速度だけど、恥ずかしい勘違いをしてました。
Builderの統合環境での実行は遅いけど、デバッグ/リリースコンパイルにかかわらず、
Exeからの実行ではそれなりの速度が出てました。

VB+oo4o 160ms
BCB+oo4o(統合環境) 3600ms
BCB+oo4o(単体実行) 170ms
BCB+ODBC(統合環境) 88ms

うーむ、それでもODBCより遅い……、謎だ。

[先月] [目次] [来月] [最新版] [トップ]

lldon@lldon.com
Akiary v.0.51