Administrators Jon Posted July 29, 2013 Author Administrators Share Posted July 29, 2013 I see some more changes that happened lately which I can't explain becuase they don't make much sense to me. Still that doesn't mean there isn't sense in them, They may be accidental, I rejigged a lot of things and I may have messed up. Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
Ascend4nt Posted July 29, 2013 Share Posted July 29, 2013 (edited) I'm seeing performance dips. Using this code from Kafu I see like a 30-40% slowdown in the latest beta vs. 3.3.8.1: $a = 1 $b = 2 $timer = TimerInit() For $i = 0 To 1000000 If $a = $b Then Else EndIf Next ConsoleWrite(TimerDiff($timer) & @CRLF) $timer = TimerInit() For $i = 0 To 1000000 Select Case $a = $b Case Else EndSelect Next ConsoleWrite(TimerDiff($timer) & @CRLF) $timer = TimerInit() For $i = 0 To 1000000 Switch $a Case $b Case Else EndSwitch Next ConsoleWrite(TimerDiff($timer) & @CRLF) from >here. *edit: forgot to update this (see post further on): problem was I was using 3.3.9.12 beta here, which is much slower than 3.3.9.13 Edited July 30, 2013 by Ascend4nt My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
trancexx Posted July 29, 2013 Share Posted July 29, 2013 They may be accidental, I rejigged a lot of things and I may have messed up.Meh. I'm sure you have things under control.Still, if you fuck-up Table type like you fucked up functions, I will kill you. I will hunt you down and just kill you. I'm yet to decide what way, but probably gonna dance you to death. Then I will do something to your body so that I can reuse your passwords and ultimately, of course, rule the world soon after I rejig back what you rejigged bad. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
UEZ Posted July 29, 2013 Share Posted July 29, 2013 (edited) Regarding performance: on German AutoIt site minx started with benchmarking the versions starting from 3.3.8.1 to 3.3.9.11 using his nice 3D engine. It shows that the performance of the beta versions are slower than 3.3.8.1. If you want to test it also: expandcollapse popup#AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_UseUpx=n #include <Date.au3> #include <File.au3> Opt("GUIOnEventMode", 1) HotKeySet("{ESC}", "quit") StartUp(800, 600, False, 0, 0, 0, 0, 0, 0, 900, 999, 0.5, 1) $sModel = "Cylinder.3DA" LoadModel() CalculateShadingFactors() AdlibRegister("FPS", 1000) $bBenchmark = True $ZoomAnimator = 0.1 #forcedef $hGraphics, $Width, $Height, $RotX, $RotY, $RotZ, $TransX, $TransY, $TransZ, $Zm, $iFPS, $VerNum, $LineNum $iFramesRendered = 0 $iMaxFrames = 2999 $iTimer = TimerInit() While 1 $hBuffer = $hGraphics $hGraphics = GUICtrlCreateGraphic(0, 0, $Width, $Height) $RotX += 1 $RotY += 1 $RotZ += 1 $Zm += $ZoomAnimator If $RotX > 360 Then $RotX = -355 If $RotY > 360 Then $RotY = -355 If $RotZ > 360 Then $RotZ = -355 If $Zm > 960 Or $Zm < 900 Then $ZoomAnimator *= -1 CreateVertexArray() ; Create a safe-to-edit copy of all vertices Translate($TransX, $TransY, $TransZ) ; Change the postion of all vertices Rotate($RotX, $RotY, $RotZ) ; Rotate all vertices Zoom($Zm) ; Zoom! ApplyPerpective() ; Well... BackfaceCulling() ; Leave behind what is behind! DrawToBuffer() ; Display it $iFPS += 1 GUICtrlDelete($hBuffer) $iFramesRendered += 1 If $iFramesRendered > $iMaxFrames And $bBenchmark Then $sResult = Round($iFramesRendered / (TimerDiff($iTimer) / 1000), 2) & " fps in ø. Rendered frames: " & $iFramesRendered & ". Render time: " & Round((TimerDiff($iTimer) / 1000), 2) & " seconds" $sAU3Arch = "X86" $bAU3Arch = @AutoItX64 $aMemStats = MemGetStats() If $bAU3Arch Then $sAU3Arch = "X64" $tChkAero = DllStructCreate("int;") DllCall("dwmapi.dll", "int", "DwmIsCompositionEnabled", "struct*", $tChkAero) $bAero = DllStructGetData($tChkAero, 1) $sFile = @ScriptDir & "\Benchmark_Results.txt" $hFile = FileOpen($sFile, 1) FileWrite($hFile, "Date:" & @TAB & @TAB & @TAB & _Now() & @CRLF & _ "AutoIt Version:" & @TAB & @TAB & @AutoItVersion & @CRLF & _ "AutoIt Exe Arch.:" & @TAB & $sAU3Arch & @CRLF & _ "OS Version:" & @TAB & @TAB & @OSVersion & @CRLF & _ "OS Arch.:" & @TAB & @TAB & @OSArch & @CRLF & _ "Aero enabled:" & @TAB & @TAB & $bAero & @CRLF & _ "CPU Model:" & @TAB & @TAB & WMI_GetCPUModel() & @CRLF & _ "Video Model:" & @TAB & @TAB & WMI_GetVideoModel() & @CRLF & _ "Physical Mem:" & @TAB & @TAB & Ceiling($aMemStats[1] / 1024^2) & " GB" & @CRLF & _ "3D Model used:" & @TAB & @TAB & StringRegExpReplace($sModel, "\.\\(.*)", "$1") & " -> Contains: " & $VerNum + 1 & " vertices and " & $LineNum + 1 & " faces" & @CRLF & _ "Result:" & @TAB & @TAB & @TAB & $sResult & @CRLF & @CRLF & @CRLF) FileClose($hFile) ShellExecute($sFile) Exit EndIf WEnd Func StartUp($wi = 800, $he = 600, $Fs = False, $x = 0, $y = 0, $z = 0, $rx = 0, $ry = 0, $rz = 0, $zoom = 900, $dis = 1000, $shade = 0.5, $borders = True) If $Fs Then Global $Width = @DesktopWidth, $Height = @DesktopHeight $Style = 0x80000000 $ExStyle = 34078736 Else Global $Width = $wi, $Height = $he $Style = -1 $ExStyle = 34078728 EndIf Global $hGUI = GUICreate("", $Width, $Height, -1, -1, $Style, $ExStyle) GUISetOnEvent(-3, "quit") Global $hGraphics = GUICtrlCreateGraphic(0, 0, $Width, $Height) GUISetBkColor(0x404040) GUISetState() Global $PIover180 = ((ATan(1) * 4) / 180), $Ver[5000][3], $TempV[5000][3], $TempZ[5000], $TempLin[5000], $Lin[5000][24], $Zcol[5000] Global $Zcent1, $Zcent2, $TempNum, $LineNum, $VerNum, $Xa, $Ya, $Za, $iFPS, $Sa = $shade, $TransX = $x, $TransY = $y, $TransZ = $z, $RotX = $rx, $RotY = $ry, $RotZ = $rz, $Zm = $zoom, $ViewDis = $dis, $XOrigin = $Width / 2, $YOrigin = $Height / 2, $bLines = $borders EndFunc ;==>StartUp Func DrawToBuffer() For $a = 0 To $TempNum $Zmin = $TempV[$Lin[$TempLin[$a]][1]][2] $Zmax = $TempV[$Lin[$TempLin[$a]][1]][2] For $t = 1 To $Lin[$TempLin[$a]][0] If $Zmin > $TempV[$Lin[$TempLin[$a]][$t]][2] Then $Zmin = $TempV[$Lin[$TempLin[$a]][$t]][2] If $Zmax < $TempV[$Lin[$TempLin[$a]][$t]][2] Then $Zmax = $TempV[$Lin[$TempLin[$a]][$t]][2] Next $z = $Zmax - $Zmin If $z > $Zcol[$a] Then $z = $Zcol[$a] $Col = ("0x" & Hex(Int($Lin[$TempLin[$a]][21] - ((($Lin[$TempLin[$a]][21] * $Sa) / $Zcol[$a]) * $z)), 2) & Hex(Int($Lin[$TempLin[$a]][22] - ((($Lin[$TempLin[$a]][22] * $Sa) / $Zcol[$a]) * $z)), 2) & Hex(Int($Lin[$TempLin[$a]][23] - ((($Lin[$TempLin[$a]][23] * $Sa) / $Zcol[$a]) * $z)), 2)) If $bLines Then GUICtrlSetGraphic($hGraphics, 8, 0x000040, $Col) Else GUICtrlSetGraphic($hGraphics, 8, $Col, $Col) EndIf For $t = 1 To $Lin[$TempLin[$a]][0] If $t = 1 Then GUICtrlSetGraphic($hGraphics, 6, $TempV[$Lin[$TempLin[$a]][$t]][0], $TempV[$Lin[$TempLin[$a]][$t]][1]) Else GUICtrlSetGraphic($hGraphics, 2, $TempV[$Lin[$TempLin[$a]][$t]][0], $TempV[$Lin[$TempLin[$a]][$t]][1]) EndIf Next Next EndFunc ;==>DrawToBuffer Func BackfaceCulling() If $LineNum = 0 Then Return 0 $TempNum = -1 For $a = 0 To $LineNum $Xmin1 = $TempV[$Lin[$a][1]][0] $Xmax1 = $Xmin1 $Ymin1 = $TempV[$Lin[$a][1]][1] $Ymax1 = $Ymin1 $Zmin1 = $TempV[$Lin[$a][1]][2] $Zmax1 = $Zmin1 For $b = 1 To $Lin[$a][0] If $Xmin1 > $TempV[$Lin[$a][$b]][0] Then $Xmin1 = $TempV[$Lin[$a][$b]][0] If $Xmax1 < $TempV[$Lin[$a][$b]][0] Then $Xmax1 = $TempV[$Lin[$a][$b]][0] If $Ymin1 > $TempV[$Lin[$a][$b]][1] Then $Ymin1 = $TempV[$Lin[$a][$b]][1] If $Ymax1 < $TempV[$Lin[$a][$b]][1] Then $Ymax1 = $TempV[$Lin[$a][$b]][1] If $Zmin1 > $TempV[$Lin[$a][$b]][2] Then $Zmin1 = $TempV[$Lin[$a][$b]][2] If $Zmax1 < $TempV[$Lin[$a][$b]][2] Then $Zmax1 = $TempV[$Lin[$a][$b]][2] Next Local $b = 0, $DotProduct = ($TempV[$Lin[$a][3]][0] * (($TempV[$Lin[$a][1]][2] * $TempV[$Lin[$a][2]][1]) - ($TempV[$Lin[$a][1]][1] * $TempV[$Lin[$a][2]][2]))) + ($TempV[$Lin[$a][3]][1] * (($TempV[$Lin[$a][1]][0] * $TempV[$Lin[$a][2]][2]) - ($TempV[$Lin[$a][1]][2] * $TempV[$Lin[$a][2]][0]))) + ($TempV[$Lin[$a][3]][2] * (($TempV[$Lin[$a][1]][1] * $TempV[$Lin[$a][2]][0]) - ($TempV[$Lin[$a][1]][0] * $TempV[$Lin[$a][2]][1]))) If $Xmin1 < 0 And $Xmax1 < 0 Then $b += 1 If $Xmin1 > $Width And $Xmax1 > $Width Then $b += 1 If $Ymin1 < 0 And $Ymax1 < 0 Then $b += 1 If $Ymin1 > $Height And $Ymax1 > $Height Then $b += 1 If $Zmin1 > $ViewDis Then $b += 1 If $b <> 0 Then ContinueLoop If $DotProduct > 0 Then $TempNum = $TempNum + 1 $TempLin[$TempNum] = $a $TempZ[$a] = ($Zmax1 - $Zmin1) / 2 + $Zmin1 EndIf Next If $TempNum = 0 Then Return 0 Do $Sw = False For $a = 0 To $TempNum - 1 If $TempZ[$TempLin[$a]] <= $TempZ[$TempLin[$a + 1]] Then ContinueLoop $Dummy = $TempLin[$a] $TempLin[$a] = $TempLin[$a + 1] $TempLin[$a + 1] = $Dummy $Sw = True Next Until $Sw = False EndFunc ;==>BackfaceCulling Func ApplyPerpective() For $a = 0 To $VerNum $Xx = $TempV[$a][0] $Yy = $TempV[$a][1] $z = $TempV[$a][2] If $z < -999 Then $z = -999 If $z > 999 Then $z = 999 $TempV[$a][0] = $XOrigin + ($Xx / (1000 - $z)) * 1000 $TempV[$a][1] = $YOrigin + ($Yy / (1000 - $z)) * 1000 Next EndFunc ;==>ApplyPerpective Func Zoom($z) For $a = 0 To $VerNum $TempV[$a][2] += $z Next EndFunc ;==>Zoom Func Rotate($Xx, $Yy, $z) Local $Xn = $Xx * $PIover180, $Yn = $Yy * $PIover180, $Zn = $z * $PIover180 For $a = 0 To $VerNum $Xx = $TempV[$a][0] $Yy = $TempV[$a][1] $z = $TempV[$a][2] Local $X1 = $Xx * Cos($Zn) - $Yy * Sin($Zn), $Y1 = $Yy * Cos($Zn) + $Xx * Sin($Zn), $Z1 = $z $TempV[$a][0] = $X1 $TempV[$a][1] = $Y1 $TempV[$a][2] = $Z1 $Xx = $TempV[$a][0] $Yy = $TempV[$a][1] $z = $TempV[$a][2] Local $Z1 = $z * Cos($Yn) - $Xx * Sin($Yn), $X1 = $z * Sin($Yn) + $Xx * Cos($Yn), $Y1 = $Yy $TempV[$a][0] = $X1 $TempV[$a][1] = $Y1 $TempV[$a][2] = $Z1 $Xx = $TempV[$a][0] $Yy = $TempV[$a][1] $z = $TempV[$a][2] Local $Y1 = $Yy * Cos($Xn) - $z * Sin($Xn), $Z1 = $Yy * Sin($Xn) + $z * Cos($Xn), $X1 = $Xx $TempV[$a][0] = $X1 $TempV[$a][1] = $Y1 $TempV[$a][2] = $Z1 Next EndFunc ;==>Rotate Func Translate($x, $y, $z) For $a = 0 To $VerNum $TempV[$a][0] += $x $TempV[$a][1] += $y $TempV[$a][2] += $z Next EndFunc ;==>Translate Func Sca($S) For $a = 0 To $VerNum For $b = 0 To 2 $TempV[$a][$b] *= $S Next Next EndFunc ;==>Sca Func CreateVertexArray() For $a = 0 To $VerNum For $b = 0 To 2 $TempV[$a][$b] = $Ver[$a][$b] Next Next EndFunc ;==>CreateVertexArray Func CalculateShadingFactors() For $a = 0 To $LineNum $Xmin1 = $Ver[$Lin[$a][1]][0] $Xmax1 = $Xmin1 $Ymin1 = $Ver[$Lin[$a][1]][1] $Ymax1 = $Ymin1 $Zmin1 = $Ver[$Lin[$a][1]][2] $Zmax1 = $Zmin1 For $b = 1 To $Lin[$a][0] $Xmin2 = $Ver[$Lin[$a][$b]][0] $Ymin2 = $Ver[$Lin[$a][$b]][1] $Zmin2 = $Ver[$Lin[$a][$b]][2] If $Xmin1 > $Xmin2 Then $Xmin1 = $Xmin2 If $Xmax1 < $Xmin2 Then $Xmax1 = $Xmin2 If $Ymin1 > $Ymin2 Then $Ymin1 = $Ymin2 If $Ymax1 < $Ymin2 Then $Ymax1 = $Ymin2 If $Zmin1 > $Zmin2 Then $Zmin1 = $Zmin2 If $Zmax1 < $Zmin2 Then $Zmax1 = $Zmin2 Next $X1 = Abs($Xmax1 - $Xmin1) $Y1 = Abs($Ymax1 - $Ymin1) $Z1 = Abs($Zmax1 - $Zmin1) If $X1 >= $Y1 And $X1 >= $Z1 Then $Zcol[$a] = $X1 If $Y1 >= $X1 And $Y1 >= $Z1 Then $Zcol[$a] = $Y1 If $Z1 >= $X1 And $Z1 >= $Y1 Then $Zcol[$a] = $Z1 Next EndFunc ;==>CalculateShadingFactors Func LoadModel() Local $aLines[41] = [ "Cylinder.3DA", _ "23", _ "v -2.5 -4.33012701892219 -10", _ "v 0 -5 -10", _ "v 2.5 -4.33012701892219 -10", _ "v 4.33012701892219 -2.5 -10", _ "v 5 -3.06151588455594e-016 -10", _ "v 4.33012701892219 2.5 -10", _ "v 2.5 4.33012701892219 -10", _ "v 6.12303176911189e-016 5 -10", _ "v -2.5 4.33012701892219 -10", _ "v -4.33012701892219 2.5 -10", _ "v -5 9.18454765366783e-016 -10", _ "v -4.33012701892219 -2.5 -10", _ "v -2.5 -4.33012701892219 10", _ "v 0 -5 10", _ "v 2.5 -4.33012701892219 10", _ "v 4.33012701892219 -2.5 10", _ "v 5 -3.06151588455594e-016 10", _ "v 4.33012701892219 2.5 10", _ "v 2.5 4.33012701892219 10", _ "v 6.12303176911189e-016 5 10", _ "v -2.5 4.33012701892219 10", _ "v -4.33012701892219 2.5 10", _ "v -5 9.18454765366783e-016 10", _ "v -4.33012701892219 -2.5 10", _ "13", _ "f 4 1 0 12 13 0 100 200", _ "f 4 2 1 13 14 0 100 200", _ "f 4 3 2 14 15 0 100 200", _ "f 4 4 3 15 16 0 100 200", _ "f 4 5 4 16 17 0 100 200", _ "f 4 6 5 17 18 0 100 200", _ "f 4 7 6 18 19 0 100 200", _ "f 4 8 7 19 20 0 100 200", _ "f 4 9 8 20 21 0 100 200", _ "f 4 10 9 21 22 0 100 200", _ "f 4 11 10 22 23 0 100 200", _ "f 4 0 11 23 12 0 100 200", _ "f 12 0 1 2 3 4 5 6 7 8 9 10 11 0 100 200", _ "f 12 23 22 21 20 19 18 17 16 15 14 13 12 0 100 200"] $Lines = UBound($aLines) $VerNum = $aLines[1] For $i = 2 To $VerNum + 2 $sRead = $aLines[$i] $aTemp = StringSplit(StringTrimLeft($sRead, 2), " ", 3) For $n = 0 To 2 $Ver[$i - 2][$n] = $aTemp[$n] Next Next $LineN = $VerNum + 3 $LineNum = $aLines[$LineN] For $i = $VerNum + 4 To $VerNum + 4 + $LineNum $sRead = $aLines[$i] $PCount = StringMid($sRead, 3, 1) If StringMid($sRead, 4, 1) <> " " Then $PCount = StringMid($sRead, 3, 2) $Cut = 4 If StringMid($sRead, 4, 1) <> " " Then $Cut = 5 $aTemp = StringSplit(StringTrimLeft($sRead, $Cut), " ", 3) $Lin[$i - ($VerNum + 4)][0] = $PCount For $n = 1 To $PCount $Lin[$i - ($VerNum + 4)][$n] = $aTemp[$n - 1] Next For $n = 21 To 23 If Number($aTemp[$PCount + ($n - 21)]) <> 0 Then $Lin[$i - ($VerNum + 4)][$n] = Number($aTemp[$PCount + ($n - 21)]) Next Next EndFunc ;==>LoadModel Func FPS() WinSetTitle("", "", "minx' AutoIt-only 3D Engine | Flat Shading Mode | FPS: " & $iFPS & " (ø fps " & StringFormat("%.2f", $iFramesRendered / (TimerDiff($iTimer) / 1000)) & ", # frames: " & $iFramesRendered & ")") $iFPS = 0 EndFunc ;==>FPS Func quit() Exit EndFunc ;==>quit Func WMI_GetCPUModel($sHost = @ComputerName) Local $objItem Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2") Local $oColItems = $objWMIService.ExecQuery("SELECT Name FROM Win32_Processor", "WQL", 0x30) If IsObj($oColItems) Then For $objItem In $oColItems Return StringStripWS($objItem.Name, 7) Next EndIf EndFunc Func WMI_GetVideoModel($sHost = @ComputerName) Local $objItem Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2") Local $oColItems = $objWMIService.ExecQuery("SELECT AdapterRAM, CurrentRefreshRate, Description, VideoProcessor FROM Win32_VideoController", "WQL", 0x30) If IsObj($oColItems) Then For $objItem In $oColItems Return $objItem.Description & ", " & $objItem.VideoProcessor & ", " & StringFormat("%.2f", ("0x" & Hex($objItem.AdapterRAM)) / 1024^2) & " MB RAM, @" & $objItem.CurrentRefreshRate & " Hz" Next EndIf EndFunc 3000 frames will be rendered! When finished it should create a text file with some information. Br, UEZ Edited July 30, 2013 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Administrators Jon Posted July 29, 2013 Author Administrators Share Posted July 29, 2013 I made a lot of changes the last version, it should be pretty close now: Date: 29/07/2013 14:46:45 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 69.88 fps in ø. Rendered frames: 2000. Render time: 28.62 seconds Date: 29/07/2013 14:47:36 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 69.48 fps in ø. Rendered frames: 2000. Render time: 28.79 seconds Deployment Blog: https://www.autoitconsulting.com/site/blog/ SCCM SDK Programming: https://www.autoitconsulting.com/site/sccm-sdk/ Link to comment Share on other sites More sharing options...
UEZ Posted July 29, 2013 Share Posted July 29, 2013 Here my results using WinXP and Win8 on same PC: expandcollapse popupDate: 29.07.2013 15:55:21 AutoIt Version: 3.3.9.12 AutoIt Exe Arch.: X86 OS Version: WIN_XP OS Architecture: X86 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 88.02 fps in ø. Rendered frames: 2000. Render time: 22.72 seconds Date: 29.07.2013 15:57:13 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_XP OS Architecture: X86 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 92.31 fps in ø. Rendered frames: 2000. Render time: 21.67 seconds Date: 29.07.2013 15:58:38 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_XP OS Architecture: X86 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 98.62 fps in ø. Rendered frames: 2000. Render time: 20.28 seconds Date: 29.07.2013 16:13:00 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 45.72 fps in ø. Rendered frames: 2000. Render time: 43.75 seconds Date: 29.07.2013 16:13:56 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X64 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 49.52 fps in ø. Rendered frames: 2000. Render time: 40.39 seconds Date: 29.07.2013 16:19:11 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 46.54 fps in ø. Rendered frames: 2000. Render time: 42.97 seconds Date: 29.07.2013 16:20:10 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X64 OS Version: WIN_8 OS Architecture: X64 CPU Model: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz Physical Mem: 2 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 47.83 fps in ø. Rendered frames: 2000. Render time: 41.82 seconds WinXP is twice faster than Win8. Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 29, 2013 Moderators Share Posted July 29, 2013 Jon,re: Icons added to resources and how to access them.I think this needs to be brought into Aut2Exe natively so it doesn't accidentally break when I change things - should be fairly straightforward nowThe perfect solution. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Iczer Posted July 29, 2013 Share Posted July 29, 2013 tested my 3.3.8.1. script with 3.3.9.13 Au3check and get: ! Au3check doesn't support input files encoded as UTF16 with BOM: drive:\path\to\script.au3 those *.au3 encoded as UTF16 Little Endian, just like main script, but for some reason Au3check doesn't like them... Link to comment Share on other sites More sharing options...
Developers Jos Posted July 29, 2013 Developers Share Posted July 29, 2013 tested my 3.3.8.1. script with 3.3.9.13 Au3check and get: ! Au3check doesn't support input files encoded as UTF16 with BOM: drive:\path\to\script.au3 those *.au3 encoded as UTF16 Little Endian, just like main script, but for some reason Au3check doesn't like them... This has always been the case so nothing new here. Only change has been that it ends with a "nice" message in stead of simply crapping out. Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Iczer Posted July 29, 2013 Share Posted July 29, 2013 hmm...but 3.3.8.1. doesn't complain about all functions in those scripts... ("script.au3"(49,45) : error: _my_func(): undefined function) Link to comment Share on other sites More sharing options...
Developers Jos Posted July 29, 2013 Developers Share Posted July 29, 2013 hmm...but 3.3.8.1. doesn't complain about all functions in those scripts... ("script.au3"(49,45) : error: _my_func(): undefined function) Don't understand the relation of this post to your previous observation. Maybe you can be a little more explicit and give the info needed to understand you like what script you are talking about? Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Iczer Posted July 29, 2013 Share Posted July 29, 2013 (edited) #Include "E:\Program Files\Auto-it scripts\_udf.au3" ; <--- UTF16 Little Endian (with _func_from_udf()) #Include "E:\Program Files\Auto-it scripts\_udf_2.au3"; <--- code page property (blank) _func_from_udf() ;-----; #Include "E:\Program Files\Auto-it scripts\_udf.au3"; <--- UTF16 Little Endian(with _func_from_udf()) #Include "E:\Program Files\Auto-it scripts\_udf_2.au3"; <--- code page property(blank) _func_from_udf() it seems 3.3.8.1. Au3check doesn't check for undefined functions, if it find any "*.au3" #Include, encoded as UTF16 Little Endian Edited July 29, 2013 by Iczer Link to comment Share on other sites More sharing options...
Developers Jos Posted July 29, 2013 Developers Share Posted July 29, 2013 (edited) #Include "E:\Program Files\Auto-it scripts\_udf.au3" ; <--- UTF16 Little Endian (with _func_from_udf()) #Include "E:\Program Files\Auto-it scripts\_udf_2.au3"; <--- code page property (blank) _func_from_udf() ;-----; #Include "E:\Program Files\Auto-it scripts\_udf.au3"; <--- UTF16 Little Endian(with _func_from_udf()) #Include "E:\Program Files\Auto-it scripts\_udf_2.au3"; <--- code page property(blank) _func_from_udf() it seems 3.3.8.1. Au3check doesn't check for undefined functions, if it find any "*.au3" #Include, encoded as UTF16 Little Endian As I said in my original reply: The old version (Read current production version) would hard-stop when it encountered an UTF16 file. This is changed as of v3.3.9.2 and now displaying an error informing you about it. Jos Edited July 29, 2013 by Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Ascend4nt Posted July 30, 2013 Share Posted July 30, 2013 I made a lot of changes the last version, it should be pretty close now: dang, I didn't realize I had 3.3.9.12 installed! Well, now that I've tried it with 3.3.9.13, the performance difference is definitely much smaller, only 100-150 ms slower for that entire test from KaFu to run (as compared to 3.3.8.1). My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
Ascend4nt Posted July 30, 2013 Share Posted July 30, 2013 Regarding performance: on German AutoIt site minx started with benchmarking the versions starting from 3.3.8.1 to 3.3.9.11 using his nice 3D engine. It shows that the performance of the beta versions are slower than 3.3.8.1. If you want to test it also use this link: Benchmark Tool (you need the 3DA files in script dir which can be found in this archive) When finished it should create a text file with some information. Br, UEZ UEZ, that test is pretty nice, but in its current state, it is largely dependent on how fast the graphics card (and driver) is. Even disabling Aero can affect the results. Results for me are around 1 fps difference in each AutoIt version if I leave in the graphics drawing calls (63-64 fps). However, if I remove them (commenting out GUICtrlSetGraphic() lines), I get these results: 3.3.8.1 Average: 78-79 fps 3.3.9.13 Average: 73-74 fps My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
UEZ Posted July 30, 2013 Share Posted July 30, 2013 (edited) I cannot say how much influence the GPU has here but for sure Aero has. If I turn off Aero I get a real power up of the fps but the fact is the same that at least for me the beta versions are relative slower to the 3.3.8.1 version which is not dramatical. expandcollapse popupDate: 30.07.2013 14:53:14 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_XP OS Arch.: X86 Aero enabled: 0 CPU Model: Intel Pentium II Xeon-Prozessor Video Model: VirtualBox Graphics Adapter, VBOX, 32.00 MB RAM, @60 Hz Physical Mem: 1 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 52.63 fps in ø. Rendered frames: 3000. Render time: 57 seconds Date: 30.07.2013 14:56:34 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 1 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 59.34 fps in ø. Rendered frames: 3000. Render time: 50.55 seconds Date: 30.07.2013 14:57:30 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X64 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 1 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 60.19 fps in ø. Rendered frames: 3000. Render time: 49.84 seconds Date: 30.07.2013 14:58:43 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X86 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 0 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 71.62 fps in ø. Rendered frames: 3000. Render time: 41.89 seconds Date: 30.07.2013 14:59:35 AutoIt Version: 3.3.8.1 AutoIt Exe Arch.: X64 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 0 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 75.41 fps in ø. Rendered frames: 3000. Render time: 39.78 seconds Date: 30.07.2013 15:00:47 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 0 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 69.32 fps in ø. Rendered frames: 3000. Render time: 43.28 seconds Date: 30.07.2013 15:01:42 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X64 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 0 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 73.73 fps in ø. Rendered frames: 3000. Render time: 40.69 seconds Date: 30.07.2013 15:03:01 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_XP OS Arch.: X86 Aero enabled: 0 CPU Model: Intel Pentium II Xeon-Prozessor Video Model: VirtualBox Graphics Adapter, VBOX, 32.00 MB RAM, @60 Hz Physical Mem: 1 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 49.98 fps in ø. Rendered frames: 3000. Render time: 60.02 seconds Date: 30.07.2013 15:05:07 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X86 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 1 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 59.48 fps in ø. Rendered frames: 3000. Render time: 50.44 seconds Date: 30.07.2013 15:06:03 AutoIt Version: 3.3.9.13 AutoIt Exe Arch.: X64 OS Version: WIN_7 OS Arch.: X64 Aero enabled: 1 CPU Model: Intel(R) Core(TM) i5 CPU M 540 @ 2.53GHz Video Model: Intel(R) HD Graphics, Intel(R) HD Graphics (Core i5), 2744.90 MB RAM, @60 Hz Physical Mem: 6 GB 3D Model used: Cylinder.3DA -> Contains: 24 vertices and 14 faces Result: 58.1 fps in ø. Rendered frames: 3000. Render time: 51.63 seconds I modified the text output format a little bit. If you want to test also see >post #64. The WinXP results came from a VM (VirtualBox) but on the same host. Br, UEZ Edited July 30, 2013 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 30, 2013 Moderators Share Posted July 30, 2013 Jon,In re: Accessing AutoIt3Wrapper-added icons.With help from wraithdu I have developed a valid access strategy for AutoIt3Wrapper-added icons which does not depend on the index number - and hence the number of native icons is no longer a problem. In fact you gave me the clue when you suggested using the icon name - on examination it appeared that AutoIt3Wrapper could indeed set this value but this was not documented anywhere. This additional parameter will be fully explained in the Help file for next release - along with an example script to show how to use it to access the icons. M23 czardas 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
jaberwacky Posted July 30, 2013 Share Posted July 30, 2013 Hi. I think I found an inconsistency with the ternary operator. Run this example and the issue should be apparent. Local Const $test = 0 ; test is an Int32 Switch $test Case 1 ConsoleWrite(True & @TAB & $test & @TAB & VarGetType($test) & @CRLF) Case 0, '' ; this is what executes which is correct. ConsoleWrite(False & @TAB & $test & @TAB & VarGetType($test) & @CRLF) EndSwitch ; This Displays True which is also Correct ConsoleWrite(($test ? True : False) & @TAB & $test & @TAB & VarGetType($test) & @CRLF) ; ============================================================================================== Local Const $test2 = '0' ; Test2 is a String Switch $test2 Case 1 ConsoleWrite(True & @TAB & $test2 & @TAB & VarGetType($test2) & @CRLF) Case 0, '' ; This is what executes which I guess is correct. ConsoleWrite(False & @TAB & $test2 & @TAB & VarGetType($test2) & @CRLF) EndSwitch ; But this one is where I believe the issue lies. The display is True but ; shouldn't it be False? ConsoleWrite(($test2 ? True : False) & @TAB & $test2 & @TAB & VarGetType($test2) & @CRLF) Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum? Link to comment Share on other sites More sharing options...
wraithdu Posted July 30, 2013 Share Posted July 30, 2013 (edited) A non-empty string is always True. An regarding your Switch statement, AutoIt must convert different variable type (here, a number and a string) to the same type for comparison. Either way you look at it, 0 -> "0" or "0" -> 0, and the result is True. Now you'll start to confuse yourself when you begin comparing empty strings. ConsoleWrite((0 = "") & @CRLF) ; true ConsoleWrite(("0" = "") & @CRLF) ; false ConsoleWrite(("" = 0) & @CRLF) ; true ConsoleWrite(("" = "0") & @CRLF) ; false Edited July 30, 2013 by wraithdu Link to comment Share on other sites More sharing options...
Ascend4nt Posted July 30, 2013 Share Posted July 30, 2013 I cannot say how much influence the GPU has here but for sure Aero has. If I turn off Aero I get a real power up of the fps but the fact is the same that at least for me the beta versions are relative slower to the 3.3.8.1 version which is not dramatical. ... I modified the text output format a little bit. If you want to test also see >post #64. The WinXP results came from a VM (VirtualBox) but on the same host. Br, UEZ UEZ, Certainly you know that stuff is being rendered to the display, and the graphics card is responsible for rendering that data? Since the graphics card is a separate processor with separate memory from the CPU, it will always have an effect on any benchmark which utilizes graphics. And AutoIt is nothing special with how it handles graphics - all those GUICtrlxxx calls get translated into a series of user32 and gdi32 Windows API calls. Much of the data may first be sent to an offscreen DIB or other buffer, but ultimately that data must be transferred to the screen, and for that to happen Windows has multiple layers of abstraction that it uses to ultimately render that data to the graphics card (the graphics driver is the last level of abstraction, really). When something is finally rendered to the graphics card, the system must pump memory from the motherboard across the bus to the graphics card's memory, and the graphics card can then render that data to the screen. There's exceptions for 3D primitives and preloaded textures and whatnot, but you are drawing a new image each frame, which must be transferred each time. Anyway.. what this all boils down to is that, in order to do any focused benchmarks on the CPU, you need to always always remove graphics display from the equation. This is nothing new; its been done this way for decades. If you want to test graphics speed, that's another story. In AutoIt's case, we must focus on CPU benchmarking first and foremost to find out if the interpreter's speed has changed. Speed of individual graphics functions is another story; however I doubt much has changed in quite some time (Jon can correct me here). Still, the results will always be skewed for those functions based on the graphics card and drivers being used. Okay, with that out of the way, I've retested with your script and realized I hadn't completely taken away all the graphics rendering. This time I also got rid of GUICtrlCreateGraphic() which I had missed the first time. The results are now: AutoIt v3.3.8.1: ~232 fps AutoIt v3.3.9.13: ~214 fps With graphics put back into the equation, it is around 65fps for both versions. Hopefully that gives you an idea of what the problem is with incorporating graphics into a benchmark. Also - running tests inside a VM is never a good idea, as the O/S is inside the VM running on top of another O/S with drivers which are used to translate calls into the host O/S.. its a huge extra level of abstraction really that should normally result in slower performance than running that O/S in its own native environment. czardas 1 My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
Recommended Posts