[戻る]
記事閲覧
投稿キー (右画像の数字を入力) 投稿キー
おなまえ
Eメール
タイトル
コメント
参照先
暗証キー (英数字で8文字以内)
文字色
カスタマーバーコード生成時間 投稿者:ok 投稿日:2021/03/16(Tue) 16:08 No.1414

お世話になっております。

カスタマーバーコードを生成するシステムを開発しております。
既に導入後一年程度経過しており、現在はGrapeCityのComponentOneの機能によりカスタマーバーコードを生成しております。
今回コスト面からBarcode.netを検討しているのですが、以下の処理で1〜2秒程度の処理時間が発生しております。

var yubinCustomer = new Pao.BarCode.YubinCustomer(g);

現行システムではカスタマーバーコード生成時に処理時間はほとんどかからないため、変更後に生成が遅くなるのは問題があります。

ここの処理時間を短くすることは不可能でしょうか?

Re: カスタマーバーコード生成時間 投稿者:Pao@Office 投稿日:2021/03/18(Thu) 14:38 No.1415

コンストラクタ生成時を計測してみました。
計測方法は、System.Diagnostics.Stopwatch を用いております。
次のロジックになります。

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
TimeSpan tp = sw.Elapsed;


Pao.BarCode.YubinCustomer yu = new Pao.BarCode.YubinCustomer(g);

sw.Stop();
tp = sw.Elapsed;
string sTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", tp.Hours, tp.Minutes, tp.Seconds, tp.Milliseconds / 10);

この結果、数回行いましたが
sTime 00:00:00.89
sTime 00:00:00.82
sTime 00:00:00.88
となり、時間をおいてもう一度やったところ
sTime 00:00:01.16
sTime 00:00:01.16
sTime 00:00:01.18
となりました。
試用版で計測を行いました。

コンストラクタの生成には、1秒+ー0.2秒前後というところでしょうか、マシンスペックにもよりますが、
弊社の検証では、2秒まではかかりませんが、確かに1秒はかかっています。

コンストラクタの生成には、確かに時間がかかります。
多くは、もったいないことで申し訳ないのですが、
ライセンスチェック等に処理を割いてしまっております。

ご提案とも書けませんが、現時点で思い浮かぶのは次の3点です。

(1) 試用版のライセンスチェックの方が明らかに製品版よりチェック項目が多いため時間がかかっている。
  製品版では、レジストリにキャッシュされているライセンス情報を参照するのみなので、
  明らかに試用版より時間はかからないと思われます。

(2) コンストラクタの生成 new Pao.BarCode.YubinCustomer(g) の回数を減らす。
  既にそうされているかもしれませんが、
  描画のたびにコンストラクタを生成するのではなく。

Pao.BarCode.YubinCustomer yu = new Pao.BarCode.YubinCustomer(g);

yu.Draw();
yu.Draw();
yu.Draw();



 のようなイメージで、コンストラクタは、複数バーコード出力に対して1回で済むようにしていただければ、
 速度アップにつながると思います。

(3) 最後に、ライセンス数制限なしの版も、ご相談に応じて販売しております。
  こちらは、コンストラクタ生成時に、ライセンスのチェックを一切行わないため
  速度が格段に上がります。

ここまで書いておりまして、(1) の試用版と製品版の速度差検証をしていないことに気付きましたので、
製品版で計測を行いました。
sTime 00:00:01.16
sTime 00:00:00.52
sTime 00:00:00.50
sTime 00:00:00.49
sTime 00:00:00.50
sTime 00:00:00.48

という結果でございました。
申し訳ないです。
正直、マシンのその時のメモリ使用量等の状況にもよるのでよくわからないです。
回数もテストできていない状況で申し訳ないですが、
今のところ推測でしかございませんが、
レジストリといってもディスクには違いないです。
2回目から速いのは、レジストリのキャッシュから、
.net framework かOSの内部処理で更にメモリにキャッシュされているのではないかと思います。

ただし、処理として試用版のチェック項目より、製品版のチェック項目の方が少ないのは明らかです。
例えば試用版の場合、試用版かどうかのチェック後に、
(1) 試用期間を過ぎていないか?
(2) 開発環境かどうか?
等のチェックが入ります。

長々と申し訳ないのですが、ライセンスの仕組みを変更することは難しいため
現状の整理と、ある程度のご提案ということになります。
ライセンス数制限なしの版をご要望の場合、掲示板でも構いませんが、info@pao.ac までご連絡いただいても構いません。
また、ソースコード付き版は、通常に販売してございます。

よろしくお願いいたします。

- YY-BOARD -