• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: The Case of the Missing Case Statement
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The Case of the Missing Case Statement


  • Subject: Re: The Case of the Missing Case Statement
  • From: Chris Page <email@hidden>
  • Date: Wed, 29 Apr 2015 05:02:27 -0700

> On Apr 5, 2015, at 4:57 AM, Shane Stanley <email@hidden> wrote:
>
> On 5 Apr 2015, at 8:17 pm, S. J. Cunningham <email@hidden> wrote:
>>
>> "Just don't worry about it" is not a very satisfying answer to why executing 296K if-then statements takes longer than executing 520K of them.
>
> I tried your code a couple of times, and I get the results the other way round, but with similar slim margins.

In my test, where I'm only timing the lookup functions with nothing else, the binary search function is taking less than half the time (5 vs 2 seconds):


on BinarySearchIF(n)
	if n < 6 then -- 1-6
		if n < 4 then -- 1-3
			if n = 1 then
				return 1
			else
				if n = 2 then
					return 2
				else
					return 3
				end if
			end if
		else -- 4-6
			if n = 4 then
				return 4
			else
				if n = 5 then
					return 5
				else
					return 6
				end if
			end if
		end if
	else -- 7-13
		if n < 10 then -- 7-9
			if n = 7 then
				return 7
			else
				if n = 8 then
					return 8
				else
					return 9
				end if
			end if
		else -- 10-13
			if n < 12 then --10 or 11
				if n = 10 then
					return 10
				else
					return 11
				end if
			else -- 12 or 13
				if n = 12 then
					return 12
				else
					if n = 13 then
						return 13
					else
						return -1
					end if
				end if
			end if
		end if
	end if
end BinarySearchIF

on StraightIF(n)
	if n = 1 then return 1
	if n = 2 then return 2
	if n = 3 then return 3
	if n = 4 then return 4
	if n = 5 then return 5
	if n = 6 then return 6
	if n = 7 then return 7
	if n = 8 then return 8
	if n = 9 then return 9
	if n = 10 then return 10
	if n = 11 then return 11
	if n = 12 then return 12
	if n = 13 then return 13
	if n > 13 then return -1
end StraightIF


set startTime to current date

repeat with n from 1 to 1000000
	StraightIF(n)
end repeat

set endTime to current date
set elapsedTime1 to endTime - startTime


set startTime to current date

repeat with n from 1 to 1000000
	BinarySearchIF(n)
end repeat

set endTime to current date
set elapsedTime2 to endTime - startTime


{elapsedTime1, elapsedTime2}

--
Chris Page
The other, other AppleScript Chris


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users

This email sent to email@hidden


  • Follow-Ups:
    • Re: The Case of the Missing Case Statement
      • From: "S. J. Cunningham" <email@hidden>
References: 
 >The Case of the Missing Case Statement (From: "S. J. Cunningham" <email@hidden>)
 >Re: The Case of the Missing Case Statement (From: email@hidden)
 >Re: The Case of the Missing Case Statement (From: email@hidden)
 >Re: The Case of the Missing Case Statement (From: "S. J. Cunningham" <email@hidden>)
 >Re: The Case of the Missing Case Statement (From: Shane Stanley <email@hidden>)

  • Prev by Date: Re: Why does opening any script editor open many other apps?
  • Next by Date: Re: "Expected class name but found application constant or consideration"...
  • Previous by thread: Re: The Case of the Missing Case Statement
  • Next by thread: Re: The Case of the Missing Case Statement
  • Index(es):
    • Date
    • Thread