We have started using Solaris 12.3 compiler but having issues with its performance. With Old Compiler (CC: Sun C++ 5.9 SunOS_sparc Patch 124863-01 2007/07/25) the whole build process complete in less than 3 hours but with Solaris 12.3 compiler its taking 15 hours. I was able to narrow down to a module which was taking around 13 hours. I compared time taken to compile each file in this module , on an average compiler is taking 8 minutes to compile each file where as old compiler takes 40 sec(there are around 110 cpp files in this module)
I started investigating thinking that its a disk/clearcase issue but IT department said that there no issue with either of them. I started looking at the steps in compiling each file and found that ccfe takes 95% of time. Below is the time taken by each step in compiling a single C++ file. Also verified that ulimit is unlimited for all properties. Any idea how to proceed further,any pointer?
Is it the same source that takes 3 hours with 5.9 and 15 hours with 12.3?
Can you run the compilation under time/ptime and verify that it is 'user' time, not 'system' (i.e it is the compiler itself and not file system or something like that).
In general it is not unusual for C++ frontend to take majority of compilation time, especially on a template-heavy code that requires substantial compile-time evaluation.
However the x5+ difference between 5.9 and 5.13 is troubling.
By any chance do you have an Oracle support contract to file the bug?
Just to check i compiled the same code base on same machine with 5.9 compiler and it completed in expected time (3 hours).
I am convinced that there is some issue with 5.13 compiler. I will check with IT department to see whether we have any support contract for studio, we do have support contract for Oracle.
For now i am trying to find some work around or way to make compiling faster, maximum time allowed by our build system is 8 hours after which build is automatically killed. Please let me know if you any idea (may be some compiler switch). I tried -fast but had no effect.