Notas de desempenho e comparação com FileSystemObject e seu uso para fazer arquivos de log em ASP.
Talvez, você precisa de algum registro para a sua aplicação ASP. Você deseja registrar o tempo atual e alguns outros valores para o arquivo de log e você precisa ter registros diários. Esta página contém algumas informações sobre o desempenho e pequenos problemas de bloqueio em ASP.
1. A primeira solução que você pode usar é Scripting.FileSystemObject:
<% .... DoLogFS1 [color="BROWN"]"[/color]Algum valor log[color="BROWN"]"[/color] [color="Blue"]Function[/color] DoLogFS1(LogLine) [color="Blue"]Dim[/color] OutStream, FileName [color="Blue"]Const[/color] LogSeparator = [color="BROWN"]" "[/color] FileName = [color="BROWN"]"D:\LogFiles\fs1"[/color] & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & _ [color="Blue"]Year[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Month[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Day[/color]([color="Blue"]Now[/color]), 2) & [color="BROWN"]".[url="http://www.motobit.com/help/scptutl/cm292.htm"]Log[/url]"[/color] [color="Blue"]Set[/color] OutStream = [color="Blue"]CreateObject[/color]([color="BROWN"]"Scripting.FileSystemObject"[/color]).OpenTextFile _ (FileName, 8, [color="Blue"]True[/color]) OutStream.WriteLine [color="Blue"]Now[/color]() & LogSeparator & LogLine [color="Blue"]End Function[/color] %>
Função simples. Mas leva maior parte do tempo ao criar o objeto filesystem.
2. Você pode colocar o FileSystemObject para global.asa e modificar a sua função: <Object RunAt=Server ID=FS ProgID=Scripting.FileSystemObject Scope=Application></Object> e usar o i FileSystemObject sua página ASP:
<% .... DoLogFS2 [color="BROWN"]"Some log value"[/color] [color="Blue"]Function[/color] DoLogFS2(LogLine) [color="Blue"]Dim[/color] OutStream, FileName [color="Blue"]Const[/color] LogSeparator = [color="BROWN"]" "[/color] FileName = [color="BROWN"]"D:\LogFiles\fs2"[/color] & _ [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Year[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Month[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Day[/color]([color="Blue"]Now[/color]), 2) & [color="BROWN"]".[url="http://www.motobit.com/help/scptutl/cm292.htm"]Log[/url]"[/color] [color="Blue"]Set[/color] OutStream = FS.OpenTextFile (FileName, 8, [color="Blue"]True[/color]) OutStream.WriteLine [color="Blue"]Now[/color]() & LogSeparator & LogLine [color="Blue"]End Function[/color] [color="OLIVE"]%>[/color]Esta função leva tempo quatro vezes menor do que a versão 1. Mas esta função leva a maior parte do tempo para abrir o arquivo de log para acrescentar.
3. Nós podemos fazer Optimizar - armazenar o fluxo de arquivo na aplicação:
<Object RunAt=Server ID=FS ProgID=Scripting.FileSystemObject Scope=Application></Object> <script LANGUAGE=VBScript RUNAT=Server> [color="Blue"]Sub[/color] [color="DarkBlue"]Application_OnStart[/color] [color="Blue"]Dim[/color] OutStream, FileName FileName = [color="BROWN"]"D:\LogFiles\fs2"[/color] & _
[color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Year[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Month[/color]([color="Blue"]Now[/color]), 2) & [color="Blue"]Right[/color]([color="BROWN"]"0"[/color] & [color="Blue"]Day[/color]([color="Blue"]Now[/color]), 2) & [color="BROWN"]".[url="http://www.motobit.com/help/scptutl/cm292.htm"]Log[/url]"[/color] [color="Blue"]Set[/color] OutStream = FS.OpenTextFile (FileName, 8, [color="Blue"]True[/color]) [color="Blue"]Set[/color] [color="DarkBlue"]Application[/color]([color="BROWN"]"OutStream"[/color]) = OutStream [color="Blue"]End Sub[/color] </SCRIPT> and use the stream i an ASP page: <% .... DoLogFS3 [color="BROWN"]"[/color]Algum valor log[color="BROWN"]"[/color] [color="Blue"]Function[/color] DoLogFS3(LogLine) [color="Blue"]Const[/color] LogSeparator = [color="BROWN"]" "[/color] [color="DarkBlue"]Application[/color]([color="BROWN"]"OutStream"[/color]).WriteLine [color="Blue"]Now[/color]() & LogSeparator & LogLine [color="Blue"]End Function[/color] %>o número de códigos 1. e 2. também têm um outro problema de solicitações simultâneas. Quando a página é utilizada por muitos navegadores,é aberto um arquivo de log para acrescentar. Por exemplo, se você fizer 10 000 pedidos de 10 navegadores para a página, que você quer ter 9.542 registros em seu arquivo de log (ou número semelhante). Alguns registros de log serão perdidos por causa da primeira chamada OpenTextFile para anexar o bloqueio do arquivo de log a segunda chamada de outro pedido falhará.
O número de código 3 resolve o problema, mas você tem um outro problema - agora você não tem registros diários, mas apenas um registro com data de início da aplicação ASP.
4. Podemos comparar o desempenho de uma melhor solução para a classe LogFile problema,. A classe resolve problemas com o nome do arquivo diário, pedidos simultâneos e muitos outros problemas e tarefas. Global.asa:
<Object RunAt=Server ID=LogFile ProgID=ScriptUtils.LogFile Scope=Application></Object> <script LANGUAGE=VBScript RUNAT=Server> [color="Blue"]Sub[/color] [color="DarkBlue"]Application_OnStart[/color] LogFile.TempplateFileName[url="http://www.motobit.com/help/scptutl/cm291.htm"][/url] = [color="BROWN"]"D:\Log\LG%y%m%d.Log"[/color] [color="Blue"]End Sub[/color] </SCRIPT> ASP page: <% .... LogFile.LOG [color="BROWN"]"[/color]Algum valor log [color="BROWN"]"[/color] %>A Tabela seguinte contém uma comparação de desempenho de short performance dos quatro códigos-fonte. Os tempos era de PII Celeron/500MHz.
Code number Microsecond 1. Simple FileSystemObject 3 800 2. FileSystemObject in Application 950 3. TextStream in Application 150 4. LogFile class 60
5. Mas você quer registrar valores mais do que apenas um.
[color="Blue"]Dim[/color] vCurr, vDbl, vStr, vDate, vEmpty vCurr = [color="Blue"]CCur[/color] (256.235) vDbl = [color="Blue"]CDbl[/color] (23215.132154) vStr = [color="BROWN"]"Some string value"[/color] vDate = [color="Blue"]Now[/color]
We can use FileSystemObject and code no. 3 or LogFile class: DoL
ogFS4 vStr & LogSeparator & vCurr & LogSeparator & _ vDbl & LogSeparator & vDate & LogSeparator & vEmpty or LogFile.Log vStr, vCurr, vDbl, vDate, vEmptyCode Microsecond FileSystemObject 230 LogFile class 115
Você pode ver que a classe LogFile tem um desempenho pelo menos 2 vezes melhor do que fluxo de texto de FileSystemObject. E a classe resolve muitos outros problemas e trabalhar com o log ..
Outros links para o artigo desempenho ActiveLogFile
ScriptUtils
ASP upload é fácil de usar, o desempenho do componente arquivo ASP carregar com indicador de barra de progresso. Este componente permite fazer upload de vários arquivos com tamanho de até 4 GB em um disco ou um banco de dados junto com uns outros campos do formulário. ASP arquivo enorme de upload é um componente de upload mais destaque num mercado com preços competitivos e um ótimo desempenho. O software tem também uma versão gratuita do asp upload com progresso, chamada Pure asp upload, escrito em VBS simples, sem componentes (assim você não precisa instalar nada no servidor). Este pacote de instalação contém também biblioteca ScriptUtilities. Script Utilities permite criar arquivos de log oi-performance, trabalha com dados binários, você pode baixar vários arquivos com zip / arj compressão, trabalhar com arquivos INI e muito mais com o utilitário ASP.

Help














