Execution time mis-accounting
|Reported by:||heatsink||Owned by:|
|Type of failure:||None/Unknown||Test Case:|
|Related Tickets:||Differential Rev(s):|
In the attached test case, profiling assigns a large fraction of run time to a single function. The fraction ranges from 19% to 40% across runs. Although I haven't independently verified the profile, I believe execution time is mis-attributed to this function.
The function in question is:
intersect :: Object -> Ray -> Maybe Intersection intersect obj@(Object dat mem) = objmIntersect mem dat obj
objmIntersect is a field selector. In
-ddump-simpl output, the function consists of two case statements and a function call. The function it calls has its own SCC.
In profiling, this function is usually listed as the most time-consuming function in the program. Its callee is assigned a similar amount of time. Both functions are called the same number of times. The callee computes a ray-triangle intersection, which is presumably more time-consuming than two case statements and a function call...
COST CENTRE MODULE %time %alloc intersect Datatypes 28.5 11.3 triangle.intersect Triangle 25.0 2.0 (other functions...)
I've reduced the test case from a somewhat larger ray tracer. I'm willing to help reduce it further if needed. The test case depends on the vector-space library.
Change History (14)
comment:7 Changed 5 years ago by
|Milestone:||7.2.1 → 7.4.1|
|Owner:||set to simonmar|
|Priority:||low → high|
|Type of failure:||→ None/Unknown|
comment:10 Changed 5 years ago by
|Status:||closed → new|
|Version:||6.8.2 → 7.3|