Bug 5684 – Extremely show compile times with large tuples with -O -inline

Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2011-03-02T15:46:00Z
Last change time
2012-02-01T06:26:32Z
Keywords
performance
Assigned to
nobody
Creator
dsimcha

Comments

Comment #0 by dsimcha — 2011-03-02T15:46:03Z
// test.d: import std.typecons; void main() { tuple(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,57,48, 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93, 94,95,96,97,98,99,100, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,57,48, 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93, 94,95,96,97,98,99,100); } $ time dmd -c test.d -inline -O real 1m44.177s user 0m0.015s sys 0m0.000s
Comment #1 by clugdbug — 2011-03-03T00:51:08Z
I think this is basically the same issue as bug 4379. Each optimiser pass can only remove ONE comma expression -- but the entire expression gets traversed each time. So, the optimisation time is O(n^^2) where n = depth of comma expressions.
Comment #2 by schveiguy — 2011-03-03T06:24:54Z
Bug 4900 could also be related. I would recommend profiling the compiler to see what functions it is spending the most time in. It's not a simple thing, but the makefile has (or at least had) some commented out flags that should do the trick.
Comment #3 by yebblies — 2012-02-01T06:26:32Z
*** This issue has been marked as a duplicate of issue 2396 ***