データベースから数千行を読み取り、無謀に文字列を連結して巨大な html テーブルを作成する従来の ASP ページで、サーバー側スクリプトのタイムアウトの問題を修正する必要があります。
Response.Write または COM を使用して StringBuilder を作成する必要がありますか?
データベースから数千行を読み取り、無謀に文字列を連結して巨大な html テーブルを作成する従来の ASP ページで、サーバー側スクリプトのタイムアウトの問題を修正する必要があります。
Response.Write または COM を使用して StringBuilder を作成する必要がありますか?
.NET System.IO.StringWriter クラスを使用することもできます (はい、これは従来の ASP で可能です!)
この StringBuffer クラスで使用します。
Class StringBuffer
Dim buf
Private Sub Class_Initialize()
Set buf = CreateObject("System.IO.StringWriter")
End Sub
Private Sub Class_Terminate()
Set buf = Nothing
End Sub
Public Sub Append(ByVal strValue)
If Not IsNull(strValue) Then
buf.Write_12 CStr(strValue)
End If
End Sub
Public Sub AppendLine(ByVal strValue)
buf.Write_12 strValue & vbCRLF
End Sub
Public Function ToString()
ToString = buf.GetStringBuilder().ToString()
End Function
End Class
問題を特定しました。これは常に良いスタートです。あなたが言及している速度の問題は、文字列の連結が大量のメモリを使用するためでもあります.3番目または4番目の連結に達すると、StringBuilderがより効率的になると思います.
手元にベンチマークはありませんが、アーキテクチャの観点からは、データベース操作を処理するための COM コンポーネントを作成する方向に進むことが私の好みです。コンパイルされたアプリケーションが提供できる速度の向上に加えて、データベース接続の共有などの追加機能を利用できます。
さらに、最終的により最新の開発プラットフォームに移行することを検討している場合は、将来の開発のために優れたデータ モデルの構築を開始できます。慎重に計画して作成すれば、かなりの量のコードを再利用できることに気付くかもしれません。また、従来の ASP では [簡単に] サポートされない TDD などの開発手法を導入する機会を得ることができます。
</personal-opinion> もちろんです。