Jump to content
Sign in to follow this  
Jon

AutoIt v3.3.9.13 Beta

Recommended Posts

 

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.

Share this post


Link to post
Share on other sites

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 by Ascend4nt

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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:

#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 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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Here my results using WinXP and Win8 on same PC:

Date:           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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

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 now

The perfect solution. :thumbsup:

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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.
  :)

Share this post


Link to post
Share on other sites

hmm...but 3.3.8.1. doesn't complain about all functions in those scripts... ("script.au3"(49,45) : error: _my_func(): undefined function)

:shifty::)

Share this post


Link to post
Share on other sites

hmm...but 3.3.8.1. doesn't complain about all functions in those scripts... ("script.au3"(49,45) : error: _my_func(): undefined function)

:shifty::)

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.
  :)

Share this post


Link to post
Share on other sites

#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 by Iczer

Share this post


Link to post
Share on other sites
#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 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.
  :)

Share this post


Link to post
Share on other sites

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).


Share this post


Link to post
Share on other sites

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


Share this post


Link to post
Share on other sites

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.

Date:           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 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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

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


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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 by wraithdu

Share this post


Link to post
Share on other sites

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.


Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...