[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/04/23(Sat) 14:09
投稿者名:溝田 千寿喜
Eメール:
URL :
タイトル:
###処理高速化について###
いつも楽しく拝見させて頂いております。

漠然とした質問で申し訳ないのですが、
VB6.0にて処理を高速化させたいのですが何か良い方法はありませんでしょうか?

一応Mid関数をMid$にしてみたり、構造体にアクセルする時Withを使用したり、
私なりに考えてみたのですが殆ど変化が見られませんでした。

投稿時間:2005/04/23(Sat) 15:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ###処理高速化について###
> 漠然とした質問で申し訳ないのですが、
漠然とし過ぎです。

> VB6.0にて処理を高速化させたいのですが何か良い方法はありませんでしょうか?
使用しているコードによります。
(へそ曲がり的な回答するなら より処理速度の早いPCを使用するかな。)

> 一応Mid関数をMid$にしてみたり、構造体にアクセルする時Withを使用したり、
> 私なりに考えてみたのですが殆ど変化が見られませんでした。

 hhttp://www.bcap.co.jp/hanafusa/VBHLP/sonota_no1.htm
この辺の改善では、今のマシンの性能からすれば微々たるものかと思います。
それより、全体的なコードの無駄を省く方がずっと効果がでてきます。

参考例
hhttp://www.bcap.co.jp/hanafusa/VBHLP/mozi_cut.htm

又、ふらっと さんの 自製VB6アプリ高速化ツール Version 0.7 等を使用すると
結構チェックが簡単にでき便利ですよ。(私も使っています)
hhttp://www011.upp.so-net.ne.jp/flatsoft/

ここで質問されるなら.....
hhttp://www.bcap.co.jp/hanafusa/hazimeni.htm#no4

投稿時間:2005/04/24(Sun) 00:03
投稿者名:Say
Eメール:
URL :
タイトル:
Re^2: ###処理高速化について###
> (へそ曲がり的な回答するなら より処理速度の早いPCを使用するかな。)
最も合理的な回答と思われますが・・・。
通常、高速化が必要になったとき、真っ先に検討します。

ハードの変更で解決する問題なら、ソフトのチューニングに比べて
安全かつ迅速な対応が可能ですし、効果の予測もしやすいので・・・。

投稿時間:2005/04/24(Sun) 00:32
投稿者名:Say
Eメール:
URL :
タイトル:
Re: ###処理高速化について###
> VB6.0にて処理を高速化させたいのですが何か良い方法はありませんでしょうか?

> 一応Mid関数をMid$にしてみたり、構造体にアクセルする時Withを使用したり、
> 私なりに考えてみたのですが殆ど変化が見られませんでした。

VBに限らず、小手先のテクニックを駆使するより
アルゴリズムを見直したほうがいいでしょう。

一説によると「2割の処理が8割の時間を消費する」といいますから、
時間を食っている処理を探すほうが先決でしょう。
大抵の場合、ループの中を軽くすれば目に見えて速くなります。
(文字列連結によるブロック転送を減らすとか)

今の言語システムは、処理の多くをコンポーネントに依存していますから、
高速なコンポーネントを利用するというのも有力な手段です。

もっとも、もし高速化が最優先の問題なら、
「VB6.0にて」と言っている時点で既に間違っているかも。

目に見える高速化の例としては、
Option Explicit
Private Const LOOPMAX As Long = 20000
Private Sub Command1_Click()
    Dim i As Long, a As String, t As Double
    t = Timer
    For i = 0 To LOOPMAX
        a = a & CStr(i)
    Next
    MsgBox Timer - t
End Sub

Private Sub Command2_Click()
    Dim i As Long, a As String, b(LOOPMAX) As String, t As Double
    t = Timer
    For i = 0 To LOOPMAX
        b(i) = CStr(i)
    Next
    a = Join(b, "")
    MsgBox Timer - t
End Sub

とか。

投稿時間:2005/04/25(Mon) 09:48
投稿者名:GOD
Eメール:
URL :
タイトル:
Re: ###処理高速化について###
> 漠然とした質問で申し訳ないのですが、
> VB6.0にて処理を高速化させたいのですが何か良い方法はありませんでしょうか?
>
他の方も回答してますがやっぱりコードをみないと何とも言えないですよ。
無茶を承知で答えるなら表示、HDDへのアクセスなどは処理的に重い部類に入るのでメモリ上で処理
を整え
る様にすると速くなりますよ。

# 実際にどこで処理が重いのか時間を計ってプログラムを改善するのは楽しいですよ。
時間を計るサンプル:
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

    Dim STime As Long
    STime = timeGetTime
    '処理
    Debug.Print timeGetTime - STime & "ms"

投稿時間:2005/04/26(Tue) 15:07
投稿者名:K
Eメール:
URL :
タイトル:
Re: ###処理高速化について###
まずはどこがネックになっているかを見定めることでしょう。
個人的にでよく感じる箇所としましては、
 ・ネットワーク(LANなど)が遅い、混みあっている
 ・DB接続をする場合、SQLの書き方がマズい
 ・GrapeCity VS-FlexGridなんかでは(MS-FlexGridも?)、
  RedrawプロパティをFalseにしてから値を代入したりする
なんかが多いです。

あとは、長い時間がかかる可能性のある処理では、
例えばプログレスバーを使って進行状況を表示するなどの配慮があれば良いと思います。