DeltaRocked Posted March 14, 2014 Share Posted March 14, 2014 (edited) Hi, Presently I am working on a script to load test a webservice created using Node.JS . However, I am unable to speed up the processing. The following code is a work-around , but I would like to increase its over-all performance. Hints , appreciated. Since, 1: InetGet provides a non-blocking method / ASYNC , it is being used . 2: Writing the results to the file using Little-Endian - as it is the fastest and requires least amount of code conversion. expandcollapse popup#include <Array.au3> Global Const $HTTPREQUEST_PROXYSETTING_DIRECT = 1 Global Const $HTTP_STATUS_OK = 200 Global $URL Global $count, $SecondCount Global $MaintainCount[100] Global $sFileData, $hFile FileDelete('consolidated.txt') $hFile = FileOpen('consolidated.txt', 34) For $i = 0 To 99 Step 1 $MaintainCount[$i] = 0 Next AdlibRegister('WriteToFile', 2000) ;~ AdlibRegister('Chk_Array', 150) $URL = 'http://192.168.1.14/getdata/default.aspx?adrm=TINGTONG&adrh=SomeDynamicValue' ;SomeDynamicValue is read from a txt file and that logic is not included. Presently using a static value. $count = 0 $SecondCount = 0 $begin = TimerInit() While 1 If $MaintainCount[$count] <> 0 Then If InetGetInfo($MaintainCount[$count], 2) Then ;~ AdlibUnRegister('Chk_Array') InetClose($MaintainCount[$count]) $fileContents = FileRead(@ScriptDir & '\1\' & $count & '.txt') ; FileDelete(@ScriptDir & '\1\' & $count & '.txt') $sFileData &= @HOUR & @MIN & @SEC & '|' & $fileContents & @CR $MaintainCount[$count] = 0 Call('geturl', $count) ConsoleWrite('IF : ' & $count & ' : ' & $SecondCount & @CRLF) ;~ AdlibRegister('Chk_Array', 150) EndIf Else Call('geturl', $count) ConsoleWrite('Else : ' & $count & ' : ' & $SecondCount & @CRLF) EndIf $count += 1 If $count = 100 Then $count = 0 Chk_Array() EndIf If $SecondCount == 1000 Then ExitLoop ;~ Sleep(10) WEnd AdlibUnRegister('WriteToFile') ConsoleWrite('Completed: ' & TimerDiff($begin) / 1000 & @CRLF) Local $FinalCounter = 0 While 1 For $i = 0 To 99 Step 1 If $MaintainCount[$i] <> 0 Then If InetGetInfo($MaintainCount[$i], 2) Then InetClose($MaintainCount[$i]) $fileContents = FileRead(@ScriptDir & '\1\' & $i & '.txt') ; FileDelete(@ScriptDir & '\1\' & $i & '.txt') $sFileData &= @HOUR & @MIN & @SEC & '|' & $fileContents & @CR $MaintainCount[$i] = 0 ConsoleWrite('Final : ' & $i & ' : ' & $FinalCounter & @CRLF) $FinalCounter += 1 EndIf EndIf Next If $FinalCounter == 99 Then FileWrite($hFile, $sFileData) ExitLoop EndIf WEnd ConsoleWrite('Finally Completed: ' & TimerDiff($begin) / 1000 & @CRLF) Func Chk_Array() ;~ AdlibUnRegister('Chk_Array') For $i = 0 To 99 Step 1 If $MaintainCount[$i] <> 0 Then If InetGetInfo($MaintainCount[$i], 2) Then InetClose($MaintainCount[$i]) $fileContents = FileRead(@ScriptDir & '\1\' & $i & '.txt') $sFileData &= @HOUR & @MIN & @SEC & '|' & $fileContents & @CR $MaintainCount[$i] = 0 ConsoleWrite('Adlib : ' & $i & ' : ' & $SecondCount & @CRLF) EndIf EndIf Next ;~ AdlibRegister('Chk_Array', 150) EndFunc ;==>Chk_Array Func WriteToFile() If StringInStr($sFileData, @CR, 2, 100) <> 0 Then FileWrite($hFile, $sFileData) $sFileData = '' EndIf EndFunc ;==>WriteToFile Func geturl($counter) $sdata = InetGet($URL, @ScriptDir & '\1\' & $counter & '.txt', 8, 1) $MaintainCount[$counter] = $sdata $SecondCount += 1 EndFunc ;==>geturl Is there any alternative for InetGet ? So that instead of writing it into the file, it will store the results into the buffer , that way , Disk I/O wont play a spoilsport ? A bit of the Past : The initial script completed 4 requests per second, now its around 8 requests per second. Regards [Final Update] Since there has been no reply to this thread, I presume this to be the present final solution. Edited March 18, 2014 by DeltaRocked Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now