Coming from Unix/Linux world, there's one thing that I noticed about your compiler settings. You use GCC_OPTIMIZATION_LEVEL = s. It is commonly accepted nowadays that -Os does not generally create the fastest binaries. You should use -O3 or at least -O2.

Having said that, I can't imagine that being the cause of a massive slowdown. But why do you not use -fUnroll_loops? I also think you can safely assume SSE3 to be present in all Intel Macs (Though I am unsure whether that would actually bring you anything.

Ronald Vogelaar
http://www.rovosoft.com


Theodore H. Smith wrote:
Hi people,

I'm compiling my ElfData plugin with Xcode for UB.

It seems there is a big slow down on intel. I can't figure out why. Many of my functions are running around 2x slower than the PPC version!!

So basically, if I have these stats:

PPC plugin compiled with Xcode
Intel plugin compiled with Xcode

PPC app compiled with RB2006
Intel app compiled with RB2006

Then, the Intel version of my plugin is 2x slower relative to REALbasic. I'm assuming REALbasic is the same, but ElfData is running slower. I'm also getting similar results when comparing ElfData to perl, so I don't think it's just REALbasic that is optimised for intel, it's more like ElfData's compiler settings need fixing for Intel.

Is something up? Something isn't making sense here.

I'm thinking I gotta improve my speed test project, to use a scripted test, so that I can get a complete coverage run, so I can automatically compare entire datasets between runs. This way, I can get a one stop fix to just compare what the effects of various compiler settings on my plugin's overall performance.

Then I'll do a proper comparison. I'll test CW vs MrCpp vs Xcode :) and this time get a full thorough coverage. MrCpp won't do Intel, alas, but it does G5 just fine.

I bought myself a copy of RB2006, just for the sake of testing my plugin for Intel Macs, btw :)

My settings in Xcode are thus:

GCC_GENERATE_DEBUGGING_SYMBOLS = NO
GCC_DEBUGGING_SYMBOLS = default
GCC_ENABLE_SYMBOL_SEPARATION = YES
GCC_OPTIMIZATION_LEVEL = s
GCC_NO_COMMON_BLOCKS = NO
GCC_REUSE_STRINGS = YES
GCC_DYNAMIC_NO_PIC = NO
GCC_FAST_OBJC_DISPATCH = NO
GCC_ENABLE_OBJC_GC = NO
GCC_UNROLL_LOOPS = NO
GCC_FAST_MATH = YES
GCC_STRICT_ALIASING = NO
GCC_MODEL_TUNING = G5
GCC_MODEL_PPC64 = NO
GCC_AUTO_VECTORIZATION = NO
GCC_ENABLE_SSE3_EXTENSIONS = NO
GCC_FEEDBACK_DIRECTED_OPTIMIZATION = Off
GCC_SYMBOLS_PRIVATE_EXTERN = NO
GCC_INLINES_ARE_PRIVATE_EXTERN = YES
GCC_ENABLE_FIX_AND_CONTINUE = NO
GCC_OBJC_CALL_CXX_CDTORS = NO
GCC_THREADSAFE_STATICS = NO
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
GCC_GENERATE_TEST_COVERAGE_FILES = NO

any problems here? Firstly, I'm not so sure about that GCC_MODEL_TUNING = G5 line... If I am targeting intel, why should the instructions be scheduled for G5? Won't that kill the flow? But I can't actually choose intel from Xcode's UI!!


_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to