The difference CGFloat makes

After 3 days of renovating the code in Shine, some of which is 4~5 years old, I was able to make a 64-Bit build today, which works around some of the new Core Image bugs introduced into the 32-Bit version of Core Image.

I have no idea how long this would have taken to complete without the CGFloat datatype, especially as large chunks of my frameworks had already been converted (to use #if target64-Bit).

As a bonus, being able to utilize external methods again, has speed up some of the rendering functions by as much as 3x when running in the IDE, don’t know how much that contributes to the ‘built’ application.

Still have a long way to go to complete this update, but a significant milestone was made today. Thanks Xojo for the CGFloat datatype, it’s the best bit of “R4”.

Yeah!. This is a big bonus for all OSX coder but what do you mean with:

[quote]As a bonus, being able to utilize external methods again, has speed up some of the rendering functions by as much as 3x when running in the IDE, don’t know how much that contributes to the ‘built’ application.
[/quote]

I can’t find any online documentation for external method, but basically for declares it means you don’t have to create a method, and obviously it saves the application from entering and exiting a method when you use external methods.

External Methods and Structures page.

Hmm possibly due to less overhead in methods calls but would be good if a xojo engineer could confirm that this or even if there is a in-the-face example.

The only advantage entering declares in “External Methods” is that you can re-use them in several methods.

So I think it’s faster only in IDE once declared and available as API call.

You can use it like its a built in global method rather than having to redeclare it everywhere you need it

There is probably no difference. Only if you had wrappers around each coded declare it might be slightly faster now. But I myself always repeated all declares in each method I needed them (so I had hundreds of allocs, inits, etc. in my projects).

Where as I work differently, if I have a piece of code that I use in more than one place, I like to centralize it, rather than repeat it.
So if I found myself using the same declares over and over again (which I do), I originally made external methods (what APIs that I could). Then for R3, I made them all methods using #if Target64Bit to separate the two targets. But now with R4, I can move them back to external methods and I am seeing a speed improvement in the IDE.

In one place it took 60,000 ms to complete the paint event. With them back as external methods (not regular methods), it’s now down to 23,000 ms. I can’t say if external methods are quicker than re-declaring in every function that requires them, but it does save you from redeclaring all the time, and centralizes them, which is what I like.

Thanks Paul.