- 日時: 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
|