2012年7月6日 星期五

傳統ASP字串效能改善(A Fast String Builder Class For Classic ASP)

我寫了一支資料匯出的程式, 資料量才 988 筆, 可是居然花了60秒才跑的完, trace 程式後發現是大量字串相加造成的問題.


程式修改之前, 資料 979到987 就需要花掉1秒中,
即1秒只能處理 9筆資料.


程式修改之前, 第1秒可以處理 93筆資料, 
由於字串變大而且重覆相加造成效能變差.


在不修改架構的情況下, 只修改字串相加的地方改用字串物件,
第1秒可以處理到 141筆資料, 而且對於後續資料處理的速度滿固定的,
 每秒都可以處理 140筆左右.


修改架構, 不透過 function 傳回字串, 而是所有的程式存取同一個字串物件,
處理速度可以到1秒 208筆資料, 原本處理60秒才能跑完的 988筆資料,
修改後5秒內可以跑完.




使用 Asp String Builder Object 來處理ASP的程式範例:

    dim oString
    Set oString = New ASPStringBuilder
    oString.Append "要相加的字串內容"
    myString = oString.ToString()
    set oString = nothing


在 asp 改用 .net 的StringBuilder 來處理, 速度上差不多,  也是5秒內跑完:
心得:
字串處理, 的問題應該解決了, 要克服其他的(程式流程或寫法), 才能讓反應速度再上去...



使用.net 的StringBuilder 來處理, ASP的程式範例:

    dim oString
    Set oString = Server.CreateObject("Max.StringBuilderObject")
    oString.Append "要相加的字串內容"
    myString = oString.ToString()
    set oString = nothing





相關文章:
A Fast String Builder Class For Classic ASP

字串物件 source code 下載:


google keyword:
classic asp stringbuilder


附註: 
應該有其他更好的解決辦法....

沒有留言:

張貼留言

Facebook 留言板