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>