2

データベースから数千行を読み取り、無謀に文字列を連結して巨大な html テーブルを作成する従来の ASP ページで、サーバー側スクリプトのタイムアウトの問題を修正する必要があります。

Response.Write または COM を使用して StringBuilder を作成する必要がありますか?

4

3 に答える 3

7

.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
于 2013-07-12T11:04:55.043 に答える
2

問題を特定しました。これは常に良いスタートです。あなたが言及している速度の問題は、文字列の連結が大量のメモリを使用するためでもあります.3番目または4番目の連結に達すると、StringBuilderがより効率的になると思います.

手元にベンチマークはありませんが、アーキテクチャの観点からは、データベース操作を処理するための COM コンポーネントを作成する方向に進むことが私の好みです。コンパイルされたアプリケーションが提供できる速度の向上に加えて、データベース接続の共有などの追加機能を利用できます。

さらに、最終的により最新の開発プラットフォームに移行することを検討している場合は、将来の開発のために優れたデータ モデルの構築を開始できます。慎重に計画して作成すれば、かなりの量のコードを再利用できることに気付くかもしれません。また、従来の ASP では [簡単に] サポートされない TDD などの開発手法を導入する機会を得ることができます。

</personal-opinion> もちろんです。

于 2013-07-11T15:21:16.917 に答える