Well today i had some spare time and decided to test the theory and found out something rather interesting. I did an fresh instal of Ubuntu 12.04.4 64bit and used latest code from git to compile FreeCAD following this instructions
. I wanted to do some builds to test default packages, updated toolchain (gcc), updated Eigen... to see what introduces sketcher performance regression. First build was with default packages:
- gcc 4.6.3
- libeigen3-dev 3.0.5
I did two tests:
Removed constraint 83 before doing anything. Changing constraint 82 from 25mm to 40mm from the time I hit ok it takes 6 seconds for the dimension to move and 14 seconds total before I can interact with the window again. It should take a fraction of the second without sketcher performance regression for operation to complete.
There is huge difference in for example real time manipulation of tangent arcs compared to Ubuntu 13.10. For example opening file from the beginning of the thread and deleting constraint 83, 40, 14 and then trying to move around that tangent arc that constrain 14 was used on works really slow on Ubuntu 13.10 and in real time on Ubuntu 14.04.
The results are here:
Test 1: Performance regression detected = YES
Test 2: Performance regression detected = YES
Manual build of latest code on Ubuntu 12.04.4 64bit with default packages and default compile instructions and performance regression is already there just like the situation on Ubuntu 13.10! I was not expecting that and this i guess rules out Eigen and gcc and something else is making the difference. Are some additional compile flags used for Ubuntu 12.04 daily PPA builds?
I added and tested daily PPA build and the results:
Test 1: Performance regression detected = NO
Test 2: Performance regression detected = NO
Now i have daily PPA build and manual build made with default compile instructions and default packages on Ubuntu 12.04.4 64bit and PPA build works without sketcher regressions and manual build with them! This does indicate sketcher performance regression(s) is/are introduced at the build time? There must be some differences between default compile instructions and the procedure used for PPA build and if we find that well then i guess we might have/find a solution for our problems!