■
人生なんどとなくやってきた実測値計測。
今回はVB.NETでOracleと接続しよう!でお届けされました。
とりあえず。
ODBCとOracleCliantでやってみた。
OracleCliantもSystem.Data.OracleClientと、
Oracle.DataAccess.Clientの2本立て。
(1)ODBC
(2)System.Data.OracleClient
(3)Oracle.DataAccess.Client
としましょう。
接続文字列はともかく、データ取得ロジックはまったく同じものを使い、
ConnectionやらDataReaderやらだけが異なる状況で
Select文発行→DataReader取得→画面用データに加工
までの一連のながれを作っておいた。
結論から言うと。
(2)=(3)>(1)
っという順で取得時間が短かった。
だいたい100回のループで多少丸めてこんな感じ。
(1)500〜550ミリ秒
(2)280〜350ミリ秒
(3)280〜350ミリ秒
接続時間でも同じような比で、単純にそのまま再接続する時間を計測したら、
(1)が30〜70ミリ秒ほどかかるのにたいし、(2)=(3)は0ミリとかになってた。
時間に幅があるのは計測回数が少ないからだろなと思いながらも
1回あたり3〜5秒ほどかかるのでまってらんないのでやめたヽ(´ー`)ノ
それよりも。
気になる点があった。
SubClassで実装するデータ取得ロジックで、SuperClassからのインタフェースに
DbDataReaderを使っている箇所と、OdbcDataReader、OracleDataReaderをそのまま使っているソースも比較してみたら。
何度ってもDbDataReaderのほうが実測値が早い。
インスタンスはSuperClassで作る。だから、(1)も(2)も検索後はそれぞれOdbcDataReader、OracleDataReaderを持っている。
SubClassがReader→画面用加工のソースを作る際の引数をわざわざDbDataReaderでやったのは
SubClassのImport文がSystem.Dataだけですむからだ。
Castに必要な時間とかしょうがねんじゃね?ってJavaでやってたときにそうだったのでそう思っていたら、違ってた。
仮説と実測異なるなら仮説が間違っている。もしくは測り方が間違っている。
って原則からすると仮説のほうのような気がする。
ん〜。