tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
文字列連結の高速化(VB6.0)_4 ( No.4 )  [親スレッドへ]
日時: 2011/04/05 13:18
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[文字列処理][アルゴリズム][基本コード]                            *
* キーワード:ファイル入出力,,,,,                                            *
***********************************************************************************

----------------------------------------------------------------------------
Re^2: 文字列連結の高速化 - Say  2004/06/11-20:38 No.9268
----------------------------------------------------------------------------

> 何かすごい方法とか無いんですかね?
「常套手段」というやつは、それなりに試した結果
常套手段になっているわけですから・・・。

すごくはないけど、VBにしてはちょっとひねたやり方をひとつ・・・
Cならポインタ使って、もうちょっとましな書き方ができますが。

(あんまり吟味してないんで、バグってるかも。
再帰にすればコードは簡単になりますが、処理は遅くなるでしょう。)

Private Function func()
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim i4 As Long
Dim i5 As Long
Dim i6 As Long
Dim j As Long
Dim tmp(100000 * 6& * 4) As Byte
For i1 = 0& To 9&
    tmp(i1 * 2&) = 48 + i1
Next
For i1 = 1& To 9&
    For i2 = 0& To 9
        j = (i1 * 10& + i2) * 4& - 20&
        tmp(j) = 48& + i1
        tmp(j + 2&) = 48& + i2
    Next
Next
For i1 = 1& To 9&
    For i2 = 0& To 9&
        For i3 = 0& To 9&
            j = (i1 * 100& + i2 * 10& + i3) * 6& - 220&
            tmp(j) = 48& + i1
            tmp(j + 2&) = 48& + i2
            tmp(j + 4&) = 48& + i3
        Next
    Next
Next
For i1 = 1& To 9&
    For i2 = 0& To 9&
        For i3 = 0& To 9&
            For i4 = 0& To 9&
                j = (i1 * 1000& + i2 * 100& + i3 * 10& + i4) * 8& - 2220&
                tmp(j) = 48& + i1
                tmp(j + 2&) = 48& + i2
                tmp(j + 4&) = 48& + i3
                tmp(j + 6&) = 48& + i4
            Next
        Next
    Next
Next
For i1 = 1& To 9&
    For i2 = 0& To 9&
        For i3 = 0& To 9&
            For i4 = 0& To 9&
                For i5 = 0& To 9&
                    j = (i1 * 10000& + i2 * 1000& + i3 * 100& + _
                                       i4 * 10& + i5) * 10& - 22220&
                    tmp(j) = 48& + i1
                    tmp(j + 2&) = 48& + i2
                    tmp(j + 4&) = 48& + i3
                    tmp(j + 6&) = 48& + i4
                    tmp(j + 8&) = 48& + i5
                Next
            Next
        Next
    Next
Next
j = j + 10&
tmp(j) = 49
tmp(j + 2&) = 48
tmp(j + 4&) = 48
tmp(j + 6&) = 48
tmp(j + 8&) = 48
tmp(j + 10&) = 48
func = tmp()
End Function



 [スレッド一覧へ] [親スレッドへ]