money Posted October 10, 2011 Share Posted October 10, 2011 A reply to this topic regarding "If Then vs. If Then Endif": which belongs on a entirely topic: Results: Variable [pun intended] expandcollapse popupGlobal $eatit, $choice, $stop_watch, $cheese = 1, $laps = 10000 Global $winner[2] = [100000000, 0], $rat[4] = [0,0,0,0], $names[4] = ["If then","If Then EndIf","Switch","Select"] ConsoleWrite("The mouse are asleep, releasing the cheese " &@LF) ConsoleWrite("The cheese is being tested: ") $eatit = TimerInit() ;WARMUP For $i = 1 To 10 Sleep(10) If $cheese = $cheese Then $cheese = $cheese If $cheese = $cheese Then $cheese = $cheese EndIf Switch $cheese Case $cheese $cheese = $cheese EndSwitch Select Case $cheese = $cheese $cheese = $cheese EndSelect Next ConsoleWrite("FDA Approved" &@LF) $choice = InputBox("Pick the winning rat", StringFormat("0 = If then\r\n1 = If Then EndIf\r\n2 = Switch\r\n3 = Select"), 0) ConsoleWrite(@lf& "Setting race: 4 Contestants after " & $cheese & " cheese for "& $laps & " laps" &@lf) For $i = 1 To $laps ;============================= ; if then $stop_watch = TimerInit() If $cheese = 1 Then $cheese = 1 $rat[0] += TimerDiff($stop_watch) ;============================= ; if then endif $stop_watch = TimerInit() If $cheese = 1 Then $cheese = 1 EndIf $rat[1] += TimerDiff($stop_watch) ;============================= ; switch $stop_watch = TimerInit() Switch $cheese Case 1 $cheese = 1 EndSwitch $rat[2] += TimerDiff($stop_watch) ;============================= ; select $stop_watch = TimerInit() Select Case $cheese = 1 $cheese = 1 EndSelect $rat[3] += TimerDiff($stop_watch) Next $eatit = TimerDiff($eatit) ConsoleWrite(@lf& "+ the results are in!!!" &@lf) ConsoleWrite( "> ========================================================================" &@lf) ConsoleWrite( "> "& $names[0] &": "&@TAB& "avg: "& Round($rat[0] / $laps, 15) &", total: "& Round($rat[0],15) &@lf) ConsoleWrite( "> "& $names[1] &": "&@TAB& "avg: "& Round($rat[1] / $laps, 15) &", total: "& Round($rat[1],15) &@lf) ConsoleWrite( "> "& $names[2] &": "&@TAB& "avg: "& Round($rat[2] / $laps, 15) &", total: "& Round($rat[2],15) &@lf) ConsoleWrite( "> "& $names[3] &": "&@TAB& "avg: "& Round($rat[3] / $laps, 15) &", total: "& Round($rat[3],15) &@lf) ConsoleWrite( "> ========================================================================" &@lf) ConsoleWrite( "+ ...and the winner was: " ) For $i = 0 To UBound($rat)-1 If $rat[$i] < $winner[0] Then $winner[0] = $rat[$i] $winner[1] = $i EndIf Next ConsoleWrite( StringUpper( $names[$winner[1]]) & @lf) If $winner[1] = $choice Then ConsoleWrite("+Good choice, you picked the right rat!" & @lf) Else ConsoleWrite("Better luck next time." & @lf) EndIf ConsoleWrite("> Notice: A total of " & (Round($eatit,4)) &" ms could been taken to EAT the cheese!" &@lf) Link to comment Share on other sites More sharing options...
BrewManNH Posted October 10, 2011 Share Posted October 10, 2011 Interesting results, but skewed. If you add the line $cheese = Not $cheese just after the line For $i = 1 To $laps you will probably see very different results. By toggling between 1 and 0 (True and False), the results jump all over the 4 different choices and the differences are so small as to be negligible. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Ascend4nt Posted October 11, 2011 Share Posted October 11, 2011 (edited) BrewMan is correct here. True/False conditions cause the results to be different. For example, if $a=1 then If $a Then $a=1 is slower than If $a Then $a=1 EndIf yet, where $a=0, If $a Then $a=0 is faster than If $a Then $a=0 EndIf Edited October 11, 2011 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...
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