-
Notifications
You must be signed in to change notification settings - Fork 0
/
perf.dot
208 lines (208 loc) · 74.7 KB
/
perf.dot
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
47
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
digraph "unnamed" {
node [style=filled fillcolor="#f8f8f8"]
subgraph cluster_L { "Type: cpu" [shape=box fontsize=16 label="Type: cpu\lTime: Jun 14, 2019 at 2:11am (CDT)\lDuration: 53.12s, Total samples = 59.26s (111.56%)\lShowing nodes accounting for 53.46s, 90.21% of 59.26s total\lDropped 192 nodes (cum <= 0.30s)\lDropped 42 edges (freq <= 0.06s)\lShowing top 80 nodes out of 98\l"] }
N1 [label="runtime\nnewobject\n2s (3.37%)\nof 34.53s (58.27%)" id="node1" fontsize=15 shape=box tooltip="runtime.newobject (34.53s)" color="#b21a00" fillcolor="#edd8d5"]
N2 [label="runtime\nmallocgc\n11.72s (19.78%)\nof 32.50s (54.84%)" id="node2" fontsize=24 shape=box tooltip="runtime.mallocgc (32.50s)" color="#b21d00" fillcolor="#edd9d5"]
N3 [label="primitives\n(*Sphere)\nHit\n3.71s (6.26%)\nof 30.03s (50.67%)" id="node3" fontsize=18 shape=box tooltip="primitives.(*Sphere).Hit (30.03s)" color="#b22000" fillcolor="#edd9d5"]
N4 [label="sampler\n(*Sampler)\ncolor4Ray\n0.77s (1.30%)\nof 41s (69.19%)" id="node4" fontsize=13 shape=box tooltip="sampler.(*Sampler).color4Ray (41s)" color="#b21200" fillcolor="#edd7d5"]
N5 [label="runtime\nmain\n0 of 52.14s (87.99%)" id="node5" fontsize=8 shape=box tooltip="runtime.main (52.14s)" color="#b20600" fillcolor="#edd6d5"]
N6 [label="sampler\n(*Sampler)\nSamplePixel\n0.26s (0.44%)\nof 51.94s (87.65%)" id="node6" fontsize=11 shape=box tooltip="sampler.(*Sampler).SamplePixel (51.94s)" color="#b20600" fillcolor="#edd6d5"]
N7 [label="runtime\nsystemstack\n0.13s (0.22%)\nof 6.53s (11.02%)" id="node7" fontsize=10 shape=box tooltip="runtime.systemstack (6.53s)" color="#b27f50" fillcolor="#ede6e0"]
N8 [label="ray\n(*Camera)\nGetRay\n0.20s (0.34%)\nof 8.54s (14.41%)" id="node8" fontsize=11 shape=box tooltip="ray.(*Camera).GetRay (8.54s)" color="#b26a31" fillcolor="#ede3dc"]
N9 [label="vector\n(*Vec3)\nSub\n2.05s (3.46%)\nof 11.39s (19.22%)" id="node9" fontsize=15 shape=box tooltip="vector.(*Vec3).Sub (11.39s)" color="#b24906" fillcolor="#eddfd6"]
N10 [label="vector\n(*Vec3)\nAdd\n1.09s (1.84%)\nof 4.67s (7.88%)" id="node10" fontsize=13 shape=box tooltip="vector.(*Vec3).Add (4.67s)" color="#b2916c" fillcolor="#ede8e3"]
N11 [label="primitives\n(*World)\nHit\n1.43s (2.41%)\nof 31.46s (53.09%)" id="node11" fontsize=14 shape=box tooltip="primitives.(*World).Hit (31.46s)" color="#b21e00" fillcolor="#edd9d5"]
N12 [label="rand\n(*Rand)\nFloat64\n0.85s (1.43%)\nof 3.42s (5.77%)" id="node12" fontsize=13 shape=box tooltip="math/rand.(*Rand).Float64 (3.42s)" color="#b29c7e" fillcolor="#edeae6"]
N13 [label="runtime\nheapBitsSetType\n3.17s (5.35%)\nof 4.89s (8.25%)" id="node13" fontsize=17 shape=box tooltip="runtime.heapBitsSetType (4.89s)" color="#b28f68" fillcolor="#ede8e3"]
N14 [label="runtime\nnextFreeFast\n4.28s (7.22%)" id="node14" fontsize=18 shape=box tooltip="runtime.nextFreeFast (4.28s)" color="#b29572" fillcolor="#ede9e4"]
N15 [label="vector\n(*Vec3)\nMulScalar\n0.42s (0.71%)\nof 3.16s (5.33%)" id="node15" fontsize=12 shape=box tooltip="vector.(*Vec3).MulScalar (3.16s)" color="#b29e82" fillcolor="#edeae6"]
N16 [label="runtime\nmemclrNoHeapPointers\n2.85s (4.81%)" id="node16" fontsize=16 shape=box tooltip="runtime.memclrNoHeapPointers (2.85s)" color="#b2a187" fillcolor="#edeae7"]
N17 [label="runtime\nscanobject\n1.62s (2.73%)\nof 2.91s (4.91%)" id="node17" fontsize=14 shape=box tooltip="runtime.scanobject (2.91s)" color="#b2a086" fillcolor="#edeae7"]
N18 [label="primitives\n(*DiffuseMaterial)\nBounce\n0.11s (0.19%)\nof 4.51s (7.61%)" id="node18" fontsize=10 shape=box tooltip="primitives.(*DiffuseMaterial).Bounce (4.51s)" color="#b2936e" fillcolor="#ede8e4"]
N19 [label="vector\nRandUnitVec3\n0.62s (1.05%)\nof 3.11s (5.25%)" id="node19" fontsize=12 shape=box tooltip="vector.RandUnitVec3 (3.11s)" color="#b29f83" fillcolor="#edeae6"]
N20 [label="ray\nrandomInUnitDisc\n0.19s (0.32%)\nof 2.52s (4.25%)" id="node20" fontsize=11 shape=box tooltip="ray.randomInUnitDisc (2.52s)" color="#b2a38c" fillcolor="#edebe8"]
N21 [label="runtime\n(*mcentral)\ngrow\n0.16s (0.27%)\nof 4.79s (8.08%)" id="node21" fontsize=10 shape=box tooltip="runtime.(*mcentral).grow (4.79s)" color="#b2906a" fillcolor="#ede8e3"]
N22 [label="vector\nAdd\n0.10s (0.17%)\nof 2.37s (4.00%)" id="node22" fontsize=10 shape=box tooltip="vector.Add (2.37s)" color="#b2a48e" fillcolor="#edebe8"]
N23 [label="runtime\n(*mcentral)\ncacheSpan\n0.16s (0.27%)\nof 5.48s (9.25%)" id="node23" fontsize=10 shape=box tooltip="runtime.(*mcentral).cacheSpan (5.48s)" color="#b28a5f" fillcolor="#ede7e2"]
N24 [label="rand\n(*Rand)\nInt63\n0.30s (0.51%)\nof 2.57s (4.34%)" id="node24" fontsize=11 shape=box tooltip="math/rand.(*Rand).Int63 (2.57s)" color="#b2a38b" fillcolor="#edebe8"]
N25 [label="ray\nNewRay\n0.11s (0.19%)\nof 2.09s (3.53%)" id="node25" fontsize=10 shape=box tooltip="ray.NewRay (2.09s)" color="#b2a693" fillcolor="#edebe8"]
N26 [label="runtime\n(*mheap)\nalloc\n0.04s (0.067%)\nof 3.79s (6.40%)" id="node26" fontsize=9 shape=box tooltip="runtime.(*mheap).alloc (3.79s)" color="#b29979" fillcolor="#ede9e5"]
N27 [label="runtime\ngcBgMarkWorker\n0.01s (0.017%)\nof 3.43s (5.79%)" id="node27" fontsize=9 shape=box tooltip="runtime.gcBgMarkWorker (3.43s)" color="#b29c7e" fillcolor="#edeae6"]
N28 [label="runtime\nlock\n0.46s (0.78%)\nof 0.80s (1.35%)" id="node28" fontsize=12 shape=box tooltip="runtime.lock (0.80s)" color="#b2afa6" fillcolor="#edeceb"]
N29 [label="runtime\nheapBitsForAddr\n0.75s (1.27%)\nof 1.64s (2.77%)" id="node29" fontsize=13 shape=box tooltip="runtime.heapBitsForAddr (1.64s)" color="#b2aa99" fillcolor="#edece9"]
N30 [label="vector\n(*Vec3)\nDot\n1.21s (2.04%)" id="node30" fontsize=14 shape=box tooltip="vector.(*Vec3).Dot (1.21s)" color="#b2aca0" fillcolor="#edecea"]
N31 [label="rand\n(*rngSource)\nInt63\n0.48s (0.81%)\nof 1.41s (2.38%)" id="node31" fontsize=12 shape=box tooltip="math/rand.(*rngSource).Int63 (1.41s)" color="#b2ab9d" fillcolor="#edecea"]
N32 [label="runtime\n(*mcache)\nnextFree\n0.16s (0.27%)\nof 5.99s (10.11%)" id="node32" fontsize=10 shape=box tooltip="runtime.(*mcache).nextFree (5.99s)" color="#b28558" fillcolor="#ede7e1"]
N33 [label="runtime\nacquirem\n1.33s (2.24%)" id="node33" fontsize=14 shape=box tooltip="runtime.acquirem (1.33s)" color="#b2ac9e" fillcolor="#edecea"]
N34 [label="runtime\n(*mspan)\nsweep\n0.19s (0.32%)\nof 1.67s (2.82%)" id="node34" fontsize=11 shape=box tooltip="runtime.(*mspan).sweep (1.67s)" color="#b2a999" fillcolor="#edece9"]
N35 [label="ray\n(*Ray)\nPointAtScale\n0.10s (0.17%)\nof 2.06s (3.48%)" id="node35" fontsize=10 shape=box tooltip="ray.(*Ray).PointAtScale (2.06s)" color="#b2a793" fillcolor="#edebe9"]
N36 [label="runtime\nschedule\n0.11s (0.19%)\nof 0.94s (1.59%)" id="node36" fontsize=10 shape=box tooltip="runtime.schedule (0.94s)" color="#b2aea4" fillcolor="#edeceb"]
N37 [label="runtime\ngcDrain\n0.04s (0.067%)\nof 3.18s (5.37%)" id="node37" fontsize=9 shape=box tooltip="runtime.gcDrain (3.18s)" color="#b29e82" fillcolor="#edeae6"]
N38 [label="runtime\narenaIndex\n0.76s (1.28%)" id="node38" fontsize=13 shape=box tooltip="runtime.arenaIndex (0.76s)" color="#b2afa7" fillcolor="#edeceb"]
N39 [label="vector\n(*Vec3)\nNormalize\n0.36s (0.61%)\nof 1.22s (2.06%)" id="node39" fontsize=11 shape=box tooltip="vector.(*Vec3).Normalize (1.22s)" color="#b2aca0" fillcolor="#edecea"]
N40 [label="runtime\nunlock\n0.50s (0.84%)" id="node40" fontsize=12 shape=box tooltip="runtime.unlock (0.50s)" color="#b2b0aa" fillcolor="#edecec"]
N41 [label="runtime\nfindObject\n0.65s (1.10%)\nof 0.82s (1.38%)" id="node41" fontsize=12 shape=box tooltip="runtime.findObject (0.82s)" color="#b2afa6" fillcolor="#edeceb"]
N42 [label="runtime\nmcall\n0.04s (0.067%)\nof 1s (1.69%)" id="node42" fontsize=9 shape=box tooltip="runtime.mcall (1s)" color="#b2aea3" fillcolor="#edeceb"]
N43 [label="runtime\nbgsweep\n0 of 2.11s (3.56%)" id="node43" fontsize=8 shape=box tooltip="runtime.bgsweep (2.11s)" color="#b2a692" fillcolor="#edebe8"]
N44 [label="runtime\ngomcache\n1.02s (1.72%)" id="node44" fontsize=13 shape=box tooltip="runtime.gomcache (1.02s)" color="#b2ada3" fillcolor="#edeceb"]
N45 [label="rand\n(*lockedSource)\nInt63\n0.16s (0.27%)\nof 1.19s (2.01%)" id="node45" fontsize=10 shape=box tooltip="math/rand.(*lockedSource).Int63 (1.19s)" color="#b2aca0" fillcolor="#edecea"]
N46 [label="runtime\nsweepone\n0.36s (0.61%)\nof 2.10s (3.54%)" id="node46" fontsize=11 shape=box tooltip="runtime.sweepone (2.10s)" color="#b2a692" fillcolor="#edebe8"]
N47 [label="rand\n(*rngSource)\nUint64\n0.93s (1.57%)" id="node47" fontsize=13 shape=box tooltip="math/rand.(*rngSource).Uint64 (0.93s)" color="#b2aea4" fillcolor="#edeceb"]
N48 [label="runtime\ngoschedImpl\n0.02s (0.034%)\nof 0.83s (1.40%)" id="node48" fontsize=9 shape=box tooltip="runtime.goschedImpl (0.83s)" color="#b2afa5" fillcolor="#edeceb"]
N49 [label="runtime\n(*mheap)\nfreeSpanLocked\n0.07s (0.12%)\nof 0.85s (1.43%)" id="node49" fontsize=10 shape=box tooltip="runtime.(*mheap).freeSpanLocked (0.85s)" color="#b2aea5" fillcolor="#edeceb"]
N50 [label="runtime\nreleasem\n0.81s (1.37%)" id="node50" fontsize=13 shape=box tooltip="runtime.releasem (0.81s)" color="#b2afa6" fillcolor="#edeceb"]
N51 [label="runtime\ngentraceback\n0.10s (0.17%)\nof 0.58s (0.98%)" id="node51" fontsize=10 shape=box tooltip="runtime.gentraceback (0.58s)" color="#b2b0a9" fillcolor="#edeceb"]
N52 [label="runtime\nmarkroot\n0 of 0.75s (1.27%)" id="node52" fontsize=8 shape=box tooltip="runtime.markroot (0.75s)" color="#b2afa7" fillcolor="#edeceb"]
N53 [label="runtime\n(*mheap)\nalloc_m\n0.09s (0.15%)\nof 1.20s (2.02%)" id="node53" fontsize=10 shape=box tooltip="runtime.(*mheap).alloc_m (1.20s)" color="#b2aca0" fillcolor="#edecea"]
N54 [label="runtime\n(*mcentral)\nfreeSpan\n0.15s (0.25%)\nof 1.12s (1.89%)" id="node54" fontsize=10 shape=box tooltip="runtime.(*mcentral).freeSpan (1.12s)" color="#b2ada1" fillcolor="#edecea"]
N55 [label="primitives\n(*MetallicMaterial)\nBounce\n0.05s (0.084%)\nof 0.52s (0.88%)" id="node55" fontsize=10 shape=box tooltip="primitives.(*MetallicMaterial).Bounce (0.52s)" color="#b2b0aa" fillcolor="#edecec"]
N56 [label="primitives\n(*DielectricMaterial)\nBounce\n0.06s (0.1%)\nof 0.65s (1.10%)" id="node56" fontsize=10 shape=box tooltip="primitives.(*DielectricMaterial).Bounce (0.65s)" color="#b2afa8" fillcolor="#edeceb"]
N57 [label="runtime\nnewstack\n0.01s (0.017%)\nof 0.36s (0.61%)" id="node57" fontsize=9 shape=box tooltip="runtime.newstack (0.36s)" color="#b2b1ad" fillcolor="#edecec"]
N58 [label="runtime\nnewMarkBits\n0.13s (0.22%)\nof 0.64s (1.08%)" id="node58" fontsize=10 shape=box tooltip="runtime.newMarkBits (0.64s)" color="#b2b0a8" fillcolor="#edeceb"]
N59 [label="runtime\n(*mheap)\nallocSpanLocked\n0.15s (0.25%)\nof 0.86s (1.45%)" id="node59" fontsize=10 shape=box tooltip="runtime.(*mheap).allocSpanLocked (0.86s)" color="#b2aea5" fillcolor="#edeceb"]
N60 [label="runtime\n(*mheap)\nfreeSpan\nfunc1\n0.04s (0.067%)\nof 0.78s (1.32%)" id="node60" fontsize=9 shape=box tooltip="runtime.(*mheap).freeSpan.func1 (0.78s)" color="#b2afa6" fillcolor="#edeceb"]
N61 [label="runtime\nheapBits\ninitSpan\n0.15s (0.25%)\nof 0.77s (1.30%)" id="node61" fontsize=10 shape=box tooltip="runtime.heapBits.initSpan (0.77s)" color="#b2afa6" fillcolor="#edeceb"]
N62 [label="runtime\nscanblock\n0.22s (0.37%)\nof 0.37s (0.62%)" id="node62" fontsize=11 shape=box tooltip="runtime.scanblock (0.37s)" color="#b2b1ac" fillcolor="#edecec"]
N63 [label="runtime\n(*gcBitsArena)\ntryAlloc\n0.49s (0.83%)" id="node63" fontsize=12 shape=box tooltip="runtime.(*gcBitsArena).tryAlloc (0.49s)" color="#b2b0ab" fillcolor="#edecec"]
N64 [label="runtime\ngcmarknewobject\n0.33s (0.56%)\nof 0.80s (1.35%)" id="node64" fontsize=11 shape=box tooltip="runtime.gcmarknewobject (0.80s)" color="#b2afa6" fillcolor="#edeceb"]
N65 [label="sync\n(*Mutex)\nUnlock\n0.43s (0.73%)" id="node65" fontsize=12 shape=box tooltip="sync.(*Mutex).Unlock (0.43s)" color="#b2b1ac" fillcolor="#edecec"]
N66 [label="runtime\nspanOf\n0.27s (0.46%)\nof 0.31s (0.52%)" id="node66" fontsize=11 shape=box tooltip="runtime.spanOf (0.31s)" color="#b2b1ad" fillcolor="#ededec"]
N67 [label="runtime\nstdcall1\n0.40s (0.67%)" id="node67" fontsize=11 shape=box tooltip="runtime.stdcall1 (0.40s)" color="#b2b1ac" fillcolor="#edecec"]
N68 [label="runtime\n(*mspan)\nnextFreeIndex\n0.19s (0.32%)\nof 0.33s (0.56%)" id="node68" fontsize=11 shape=box tooltip="runtime.(*mspan).nextFreeIndex (0.33s)" color="#b2b1ad" fillcolor="#ededec"]
N69 [label="runtime\nfindrunnable\n0.06s (0.1%)\nof 0.34s (0.57%)" id="node69" fontsize=10 shape=box tooltip="runtime.findrunnable (0.34s)" color="#b2b1ad" fillcolor="#ededec"]
N70 [label="runtime\ngcDrainN\n0.01s (0.017%)\nof 0.61s (1.03%)" id="node70" fontsize=9 shape=box tooltip="runtime.gcDrainN (0.61s)" color="#b2b0a9" fillcolor="#edeceb"]
N71 [label="runtime\nmakeSpanClass\n0.29s (0.49%)\nof 0.37s (0.62%)" id="node71" fontsize=11 shape=box tooltip="runtime.makeSpanClass (0.37s)" color="#b2b1ac" fillcolor="#edecec"]
N72 [label="ray\n(*Color)\nAdd\n0.12s (0.2%)\nof 0.70s (1.18%)" id="node72" fontsize=10 shape=box tooltip="ray.(*Color).Add (0.70s)" color="#b2afa7" fillcolor="#edeceb"]
N73 [label="runtime\n(*mcache)\nrefill\n0.06s (0.1%)\nof 5.54s (9.35%)" id="node73" fontsize=10 shape=box tooltip="runtime.(*mcache).refill (5.54s)" color="#b2895f" fillcolor="#ede7e2"]
N74 [label="runtime\ngreyobject\n0.23s (0.39%)\nof 0.43s (0.73%)" id="node74" fontsize=11 shape=box tooltip="runtime.greyobject (0.43s)" color="#b2b1ac" fillcolor="#edecec"]
N75 [label="runtime\nnotewakeup\n0.02s (0.034%)\nof 0.42s (0.71%)" id="node75" fontsize=9 shape=box tooltip="runtime.notewakeup (0.42s)" color="#b2b1ac" fillcolor="#edecec"]
N76 [label="runtime\npcvalue\n0.16s (0.27%)\nof 0.33s (0.56%)" id="node76" fontsize=10 shape=box tooltip="runtime.pcvalue (0.33s)" color="#b2b1ad" fillcolor="#ededec"]
N77 [label="rand\nFloat64\n0.07s (0.12%)\nof 1.39s (2.35%)" id="node77" fontsize=10 shape=box tooltip="math/rand.Float64 (1.39s)" color="#b2ab9d" fillcolor="#edecea"]
N78 [label="vector\n(*Vec3)\nDivScalar\n0.07s (0.12%)\nof 0.91s (1.54%)" id="node78" fontsize=10 shape=box tooltip="vector.(*Vec3).DivScalar (0.91s)" color="#b2aea4" fillcolor="#edeceb"]
N79 [label="runtime\n(*mTreap)\ninsert\n0.24s (0.4%)\nof 0.43s (0.73%)" id="node79" fontsize=11 shape=box tooltip="runtime.(*mTreap).insert (0.43s)" color="#b2b1ac" fillcolor="#edecec"]
N80 [label="runtime\nscanstack\n0.01s (0.017%)\nof 0.42s (0.71%)" id="node80" fontsize=9 shape=box tooltip="runtime.scanstack (0.42s)" color="#b2b1ac" fillcolor="#edecec"]
N5 -> N6 [label=" 51.94s" weight=88 penwidth=5 color="#b20600" tooltip="runtime.main ... sampler.(*Sampler).SamplePixel (51.94s)" labeltooltip="runtime.main ... sampler.(*Sampler).SamplePixel (51.94s)" style="dotted"]
N6 -> N4 [label=" 41s" weight=70 penwidth=4 color="#b21200" tooltip="sampler.(*Sampler).SamplePixel -> sampler.(*Sampler).color4Ray (41s)" labeltooltip="sampler.(*Sampler).SamplePixel -> sampler.(*Sampler).color4Ray (41s)"]
N1 -> N2 [label=" 32.50s" weight=55 penwidth=3 color="#b21d00" tooltip="runtime.newobject -> runtime.mallocgc (32.50s)" labeltooltip="runtime.newobject -> runtime.mallocgc (32.50s)"]
N4 -> N11 [label=" 31.46s" weight=54 penwidth=3 color="#b21e00" tooltip="sampler.(*Sampler).color4Ray -> primitives.(*World).Hit (31.46s)" labeltooltip="sampler.(*Sampler).color4Ray -> primitives.(*World).Hit (31.46s)"]
N11 -> N3 [label=" 30.03s" weight=51 penwidth=3 color="#b22000" tooltip="primitives.(*World).Hit -> primitives.(*Sphere).Hit (30.03s)" labeltooltip="primitives.(*World).Hit -> primitives.(*Sphere).Hit (30.03s)"]
N3 -> N1 [label=" 12.95s" weight=22 penwidth=2 color="#b24100" tooltip="primitives.(*Sphere).Hit -> runtime.newobject (12.95s)" labeltooltip="primitives.(*Sphere).Hit -> runtime.newobject (12.95s)"]
N9 -> N1 [label=" 9.34s" weight=16 color="#b26125" tooltip="vector.(*Vec3).Sub -> runtime.newobject (9.34s)" labeltooltip="vector.(*Vec3).Sub -> runtime.newobject (9.34s)"]
N3 -> N9 [label=" 9.05s" weight=16 color="#b2642a" tooltip="primitives.(*Sphere).Hit -> vector.(*Vec3).Sub (9.05s)" labeltooltip="primitives.(*Sphere).Hit -> vector.(*Vec3).Sub (9.05s)"]
N6 -> N8 [label=" 8.54s" weight=15 color="#b26a31" tooltip="sampler.(*Sampler).SamplePixel -> ray.(*Camera).GetRay (8.54s)" labeltooltip="sampler.(*Sampler).SamplePixel -> ray.(*Camera).GetRay (8.54s)"]
N2 -> N32 [label=" 5.99s" weight=11 color="#b28558" tooltip="runtime.mallocgc -> runtime.(*mcache).nextFree (5.99s)" labeltooltip="runtime.mallocgc -> runtime.(*mcache).nextFree (5.99s)"]
N32 -> N73 [label=" 5.54s" weight=10 color="#b2895f" tooltip="runtime.(*mcache).nextFree -> runtime.(*mcache).refill (5.54s)" labeltooltip="runtime.(*mcache).nextFree -> runtime.(*mcache).refill (5.54s)"]
N73 -> N23 [label=" 5.48s" weight=10 color="#b28a5f" tooltip="runtime.(*mcache).refill -> runtime.(*mcentral).cacheSpan (5.48s)" labeltooltip="runtime.(*mcache).refill -> runtime.(*mcentral).cacheSpan (5.48s)"]
N2 -> N13 [label=" 4.89s" weight=9 color="#b28f68" tooltip="runtime.mallocgc -> runtime.heapBitsSetType (4.89s)" labeltooltip="runtime.mallocgc -> runtime.heapBitsSetType (4.89s)"]
N23 -> N21 [label=" 4.79s" weight=9 color="#b2906a" tooltip="runtime.(*mcentral).cacheSpan -> runtime.(*mcentral).grow (4.79s)" labeltooltip="runtime.(*mcentral).cacheSpan -> runtime.(*mcentral).grow (4.79s)"]
N4 -> N18 [label=" 4.51s" weight=8 color="#b2936e" tooltip="sampler.(*Sampler).color4Ray -> primitives.(*DiffuseMaterial).Bounce (4.51s)" labeltooltip="sampler.(*Sampler).color4Ray -> primitives.(*DiffuseMaterial).Bounce (4.51s)"]
N2 -> N14 [label=" 4.28s" weight=8 color="#b29572" tooltip="runtime.mallocgc -> runtime.nextFreeFast (4.28s)" labeltooltip="runtime.mallocgc -> runtime.nextFreeFast (4.28s)"]
N21 -> N26 [label=" 3.79s" weight=7 color="#b29979" tooltip="runtime.(*mcentral).grow -> runtime.(*mheap).alloc (3.79s)" labeltooltip="runtime.(*mcentral).grow -> runtime.(*mheap).alloc (3.79s)"]
N10 -> N1 [label=" 3.57s" weight=7 color="#b29b7c" tooltip="vector.(*Vec3).Add -> runtime.newobject (3.57s)" labeltooltip="vector.(*Vec3).Add -> runtime.newobject (3.57s)"]
N27 -> N7 [label=" 3.31s" weight=6 color="#b29d80" tooltip="runtime.gcBgMarkWorker ... runtime.systemstack (3.31s)" labeltooltip="runtime.gcBgMarkWorker ... runtime.systemstack (3.31s)" style="dotted"]
N7 -> N37 [label=" 3.18s" weight=6 color="#b29e82" tooltip="runtime.systemstack ... runtime.gcDrain (3.18s)" labeltooltip="runtime.systemstack ... runtime.gcDrain (3.18s)" style="dotted"]
N18 -> N19 [label=" 2.92s" weight=5 color="#b2a086" tooltip="primitives.(*DiffuseMaterial).Bounce -> vector.RandUnitVec3 (2.92s)" labeltooltip="primitives.(*DiffuseMaterial).Bounce -> vector.RandUnitVec3 (2.92s)"]
N15 -> N1 [label=" 2.74s" weight=5 color="#b2a289" tooltip="vector.(*Vec3).MulScalar -> runtime.newobject (2.74s)" labeltooltip="vector.(*Vec3).MulScalar -> runtime.newobject (2.74s)"]
N37 -> N17 [label=" 2.61s" weight=5 color="#b2a38b" tooltip="runtime.gcDrain -> runtime.scanobject (2.61s)" labeltooltip="runtime.gcDrain -> runtime.scanobject (2.61s)"]
N12 -> N24 [label=" 2.57s" weight=5 color="#b2a38b" tooltip="math/rand.(*Rand).Float64 -> math/rand.(*Rand).Int63 (2.57s)" labeltooltip="math/rand.(*Rand).Float64 -> math/rand.(*Rand).Int63 (2.57s)"]
N26 -> N16 [label=" 2.55s" weight=5 color="#b2a38c" tooltip="runtime.(*mheap).alloc -> runtime.memclrNoHeapPointers (2.55s)" labeltooltip="runtime.(*mheap).alloc -> runtime.memclrNoHeapPointers (2.55s)"]
N8 -> N20 [label=" 2.52s" weight=5 color="#b2a38c" tooltip="ray.(*Camera).GetRay -> ray.randomInUnitDisc (2.52s)" labeltooltip="ray.(*Camera).GetRay -> ray.randomInUnitDisc (2.52s)"]
N22 -> N10 [label=" 2.27s" weight=4 color="#b2a590" tooltip="vector.Add -> vector.(*Vec3).Add (2.27s)" labeltooltip="vector.Add -> vector.(*Vec3).Add (2.27s)"]
N43 -> N46 [label=" 2.09s" weight=4 color="#b2a693" tooltip="runtime.bgsweep -> runtime.sweepone (2.09s)" labeltooltip="runtime.bgsweep -> runtime.sweepone (2.09s)"]
N3 -> N35 [label=" 2.06s" weight=4 color="#b2a793" tooltip="primitives.(*Sphere).Hit -> ray.(*Ray).PointAtScale (2.06s)" labeltooltip="primitives.(*Sphere).Hit -> ray.(*Ray).PointAtScale (2.06s)"]
N25 -> N1 [label=" 1.95s" weight=4 color="#b2a795" tooltip="ray.NewRay -> runtime.newobject (1.95s)" labeltooltip="ray.NewRay -> runtime.newobject (1.95s)"]
N8 -> N10 [label=" 1.74s" weight=3 color="#b2a998" tooltip="ray.(*Camera).GetRay -> vector.(*Vec3).Add (1.74s)" labeltooltip="ray.(*Camera).GetRay -> vector.(*Vec3).Add (1.74s)"]
N46 -> N34 [label=" 1.60s" weight=3 color="#b2aa9a" tooltip="runtime.sweepone -> runtime.(*mspan).sweep (1.60s)" labeltooltip="runtime.sweepone -> runtime.(*mspan).sweep (1.60s)"]
N13 -> N29 [label=" 1.52s" weight=3 color="#b2aa9b" tooltip="runtime.heapBitsSetType -> runtime.heapBitsForAddr (1.52s)" labeltooltip="runtime.heapBitsSetType -> runtime.heapBitsForAddr (1.52s)"]
N19 -> N12 [label=" 1.51s" weight=3 color="#b2aa9b" tooltip="vector.RandUnitVec3 -> math/rand.(*Rand).Float64 (1.51s)" labeltooltip="vector.RandUnitVec3 -> math/rand.(*Rand).Float64 (1.51s)"]
N8 -> N15 [label=" 1.39s" weight=3 color="#b2ab9d" tooltip="ray.(*Camera).GetRay -> vector.(*Vec3).MulScalar (1.39s)" labeltooltip="ray.(*Camera).GetRay -> vector.(*Vec3).MulScalar (1.39s)"]
N6 -> N77 [label=" 1.39s" weight=3 color="#b2ab9d" tooltip="sampler.(*Sampler).SamplePixel -> math/rand.Float64 (1.39s)" labeltooltip="sampler.(*Sampler).SamplePixel -> math/rand.Float64 (1.39s)"]
N2 -> N33 [label=" 1.33s" weight=3 color="#b2ac9e" tooltip="runtime.mallocgc -> runtime.acquirem (1.33s)" labeltooltip="runtime.mallocgc -> runtime.acquirem (1.33s)"]
N77 -> N12 [label=" 1.32s" weight=3 color="#b2ac9e" tooltip="math/rand.Float64 -> math/rand.(*Rand).Float64 (1.32s)" labeltooltip="math/rand.Float64 -> math/rand.(*Rand).Float64 (1.32s)"]
N4 -> N1 [label=" 1.23s" weight=3 color="#b2ac9f" tooltip="sampler.(*Sampler).color4Ray ... runtime.newobject (1.23s)" labeltooltip="sampler.(*Sampler).color4Ray ... runtime.newobject (1.23s)" style="dotted"]
N26 -> N7 [label=" 1.20s" weight=3 color="#b2aca0" tooltip="runtime.(*mheap).alloc -> runtime.systemstack (1.20s)" labeltooltip="runtime.(*mheap).alloc -> runtime.systemstack (1.20s)"]
N7 -> N53 [label=" 1.20s" weight=3 color="#b2aca0" tooltip="runtime.systemstack ... runtime.(*mheap).alloc_m (1.20s)" labeltooltip="runtime.systemstack ... runtime.(*mheap).alloc_m (1.20s)" style="dotted"]
N24 -> N45 [label=" 1.19s" weight=3 color="#b2aca0" tooltip="math/rand.(*Rand).Int63 -> math/rand.(*lockedSource).Int63 (1.19s)" labeltooltip="math/rand.(*Rand).Int63 -> math/rand.(*lockedSource).Int63 (1.19s)"]
N3 -> N30 [label=" 1.13s" weight=2 color="#b2ada1" tooltip="primitives.(*Sphere).Hit ... vector.(*Vec3).Dot (1.13s)" labeltooltip="primitives.(*Sphere).Hit ... vector.(*Vec3).Dot (1.13s)" style="dotted"]
N34 -> N54 [label=" 1.12s" weight=2 color="#b2ada1" tooltip="runtime.(*mspan).sweep -> runtime.(*mcentral).freeSpan (1.12s)" labeltooltip="runtime.(*mspan).sweep -> runtime.(*mcentral).freeSpan (1.12s)"]
N24 -> N31 [label=" 1.08s" weight=2 color="#b2ada2" tooltip="math/rand.(*Rand).Int63 -> math/rand.(*rngSource).Int63 (1.08s)" labeltooltip="math/rand.(*Rand).Int63 -> math/rand.(*rngSource).Int63 (1.08s)"]
N20 -> N9 [label=" 1.07s" weight=2 color="#b2ada2" tooltip="ray.randomInUnitDisc -> vector.(*Vec3).Sub (1.07s)" labeltooltip="ray.randomInUnitDisc -> vector.(*Vec3).Sub (1.07s)"]
N35 -> N22 [label=" 1.05s" weight=2 color="#b2ada2" tooltip="ray.(*Ray).PointAtScale -> vector.Add (1.05s)" labeltooltip="ray.(*Ray).PointAtScale -> vector.Add (1.05s)"]
N2 -> N44 [label=" 1.02s" weight=2 color="#b2ada3" tooltip="runtime.mallocgc -> runtime.gomcache (1.02s)" labeltooltip="runtime.mallocgc -> runtime.gomcache (1.02s)"]
N8 -> N25 [label=" 1.01s" weight=2 color="#b2aea3" tooltip="ray.(*Camera).GetRay -> ray.NewRay (1.01s)" labeltooltip="ray.(*Camera).GetRay -> ray.NewRay (1.01s)"]
N8 -> N9 [label=" 1s" weight=2 color="#b2aea3" tooltip="ray.(*Camera).GetRay -> vector.(*Vec3).Sub (1s)" labeltooltip="ray.(*Camera).GetRay -> vector.(*Vec3).Sub (1s)"]
N19 -> N39 [label=" 0.98s" weight=2 color="#b2aea3" tooltip="vector.RandUnitVec3 -> vector.(*Vec3).Normalize (0.98s)" labeltooltip="vector.RandUnitVec3 -> vector.(*Vec3).Normalize (0.98s)"]
N31 -> N47 [label=" 0.93s" weight=2 color="#b2aea4" tooltip="math/rand.(*rngSource).Int63 -> math/rand.(*rngSource).Uint64 (0.93s)" labeltooltip="math/rand.(*rngSource).Int63 -> math/rand.(*rngSource).Uint64 (0.93s)"]
N18 -> N25 [label=" 0.91s" weight=2 color="#b2aea4" tooltip="primitives.(*DiffuseMaterial).Bounce -> ray.NewRay (0.91s)" labeltooltip="primitives.(*DiffuseMaterial).Bounce -> ray.NewRay (0.91s)"]
N3 -> N78 [label=" 0.91s" weight=2 color="#b2aea4" tooltip="primitives.(*Sphere).Hit -> vector.(*Vec3).DivScalar (0.91s)" labeltooltip="primitives.(*Sphere).Hit -> vector.(*Vec3).DivScalar (0.91s)"]
N35 -> N15 [label=" 0.91s" weight=2 color="#b2aea4" tooltip="ray.(*Ray).PointAtScale ... vector.(*Vec3).MulScalar (0.91s)" labeltooltip="ray.(*Ray).PointAtScale ... vector.(*Vec3).MulScalar (0.91s)" style="dotted"]
N53 -> N59 [label=" 0.86s" weight=2 color="#b2aea5" tooltip="runtime.(*mheap).alloc_m -> runtime.(*mheap).allocSpanLocked (0.86s)" labeltooltip="runtime.(*mheap).alloc_m -> runtime.(*mheap).allocSpanLocked (0.86s)"]
N78 -> N1 [label=" 0.84s" weight=2 color="#b2aea5" tooltip="vector.(*Vec3).DivScalar -> runtime.newobject (0.84s)" labeltooltip="vector.(*Vec3).DivScalar -> runtime.newobject (0.84s)"]
N2 -> N50 [label=" 0.81s" weight=2 color="#b2afa6" tooltip="runtime.mallocgc -> runtime.releasem (0.81s)" labeltooltip="runtime.mallocgc -> runtime.releasem (0.81s)"]
N2 -> N64 [label=" 0.80s" weight=2 color="#b2afa6" tooltip="runtime.mallocgc -> runtime.gcmarknewobject (0.80s)" labeltooltip="runtime.mallocgc -> runtime.gcmarknewobject (0.80s)"]
N4 -> N15 [label=" 0.79s" weight=2 color="#b2afa6" tooltip="sampler.(*Sampler).color4Ray -> vector.(*Vec3).MulScalar (0.79s)" labeltooltip="sampler.(*Sampler).color4Ray -> vector.(*Vec3).MulScalar (0.79s)"]
N54 -> N7 [label=" 0.78s" weight=2 color="#b2afa6" tooltip="runtime.(*mcentral).freeSpan ... runtime.systemstack (0.78s)" labeltooltip="runtime.(*mcentral).freeSpan ... runtime.systemstack (0.78s)" style="dotted"]
N7 -> N60 [label=" 0.78s" weight=2 color="#b2afa6" tooltip="runtime.systemstack -> runtime.(*mheap).freeSpan.func1 (0.78s)" labeltooltip="runtime.systemstack -> runtime.(*mheap).freeSpan.func1 (0.78s)"]
N21 -> N61 [label=" 0.77s" weight=2 color="#b2afa6" tooltip="runtime.(*mcentral).grow -> runtime.heapBits.initSpan (0.77s)" labeltooltip="runtime.(*mcentral).grow -> runtime.heapBits.initSpan (0.77s)"]
N39 -> N1 [label=" 0.71s" weight=2 color="#b2afa7" tooltip="vector.(*Vec3).Normalize -> runtime.newobject (0.71s)" labeltooltip="vector.(*Vec3).Normalize -> runtime.newobject (0.71s)"]
N6 -> N72 [label=" 0.70s" weight=2 color="#b2afa7" tooltip="sampler.(*Sampler).SamplePixel -> ray.(*Color).Add (0.70s)" labeltooltip="sampler.(*Sampler).SamplePixel -> ray.(*Color).Add (0.70s)"]
N8 -> N22 [label=" 0.68s" weight=2 color="#b2afa8" tooltip="ray.(*Camera).GetRay -> vector.Add (0.68s)" labeltooltip="ray.(*Camera).GetRay -> vector.Add (0.68s)"]
N4 -> N56 [label=" 0.65s" weight=2 color="#b2afa8" tooltip="sampler.(*Sampler).color4Ray -> primitives.(*DielectricMaterial).Bounce (0.65s)" labeltooltip="sampler.(*Sampler).color4Ray -> primitives.(*DielectricMaterial).Bounce (0.65s)"]
N4 -> N22 [label=" 0.64s" weight=2 color="#b2b0a8" tooltip="sampler.(*Sampler).color4Ray -> vector.Add (0.64s)" labeltooltip="sampler.(*Sampler).color4Ray -> vector.Add (0.64s)"]
N20 -> N1 [label=" 0.62s" weight=2 color="#b2b0a9" tooltip="ray.randomInUnitDisc -> runtime.newobject (0.62s)" labeltooltip="ray.randomInUnitDisc -> runtime.newobject (0.62s)"]
N7 -> N70 [label=" 0.61s" weight=2 color="#b2b0a9" tooltip="runtime.systemstack ... runtime.gcDrainN (0.61s)" labeltooltip="runtime.systemstack ... runtime.gcDrainN (0.61s)" style="dotted"]
N72 -> N1 [label=" 0.58s" color="#b2b0a9" tooltip="ray.(*Color).Add -> runtime.newobject (0.58s)" labeltooltip="ray.(*Color).Add -> runtime.newobject (0.58s)"]
N18 -> N10 [label=" 0.57s" color="#b2b0a9" tooltip="primitives.(*DiffuseMaterial).Bounce -> vector.(*Vec3).Add (0.57s)" labeltooltip="primitives.(*DiffuseMaterial).Bounce -> vector.(*Vec3).Add (0.57s)"]
N29 -> N38 [label=" 0.57s" color="#b2b0a9" tooltip="runtime.heapBitsForAddr -> runtime.arenaIndex (0.57s)" labeltooltip="runtime.heapBitsForAddr -> runtime.arenaIndex (0.57s)"]
N17 -> N41 [label=" 0.57s" color="#b2b0a9" tooltip="runtime.scanobject -> runtime.findObject (0.57s)" labeltooltip="runtime.scanobject -> runtime.findObject (0.57s)"]
N48 -> N36 [label=" 0.56s" color="#b2b0aa" tooltip="runtime.goschedImpl -> runtime.schedule (0.56s)" labeltooltip="runtime.goschedImpl -> runtime.schedule (0.56s)"]
N42 -> N48 [label=" 0.56s" color="#b2b0aa" tooltip="runtime.mcall ... runtime.goschedImpl (0.56s)" labeltooltip="runtime.mcall ... runtime.goschedImpl (0.56s)" style="dotted"]
N20 -> N12 [label=" 0.55s" color="#b2b0aa" tooltip="ray.randomInUnitDisc -> math/rand.(*Rand).Float64 (0.55s)" labeltooltip="ray.randomInUnitDisc -> math/rand.(*Rand).Float64 (0.55s)"]
N60 -> N49 [label=" 0.55s" color="#b2b0aa" tooltip="runtime.(*mheap).freeSpan.func1 -> runtime.(*mheap).freeSpanLocked (0.55s)" labeltooltip="runtime.(*mheap).freeSpan.func1 -> runtime.(*mheap).freeSpanLocked (0.55s)"]
N61 -> N58 [label=" 0.53s" color="#b2b0aa" tooltip="runtime.heapBits.initSpan ... runtime.newMarkBits (0.53s)" labeltooltip="runtime.heapBits.initSpan ... runtime.newMarkBits (0.53s)" style="dotted"]
N4 -> N55 [label=" 0.52s" color="#b2b0aa" tooltip="sampler.(*Sampler).color4Ray -> primitives.(*MetallicMaterial).Bounce (0.52s)" labeltooltip="sampler.(*Sampler).color4Ray -> primitives.(*MetallicMaterial).Bounce (0.52s)"]
N58 -> N63 [label=" 0.49s" color="#b2b0ab" tooltip="runtime.newMarkBits -> runtime.(*gcBitsArena).tryAlloc (0.49s)" labeltooltip="runtime.newMarkBits -> runtime.(*gcBitsArena).tryAlloc (0.49s)"]
N37 -> N52 [label=" 0.46s" color="#b2b0ab" tooltip="runtime.gcDrain -> runtime.markroot (0.46s)" labeltooltip="runtime.gcDrain -> runtime.markroot (0.46s)"]
N45 -> N65 [label=" 0.43s" color="#b2b1ac" tooltip="math/rand.(*lockedSource).Int63 -> sync.(*Mutex).Unlock (0.43s)" labeltooltip="math/rand.(*lockedSource).Int63 -> sync.(*Mutex).Unlock (0.43s)"]
N49 -> N79 [label=" 0.43s" color="#b2b1ac" tooltip="runtime.(*mheap).freeSpanLocked -> runtime.(*mTreap).insert (0.43s)" labeltooltip="runtime.(*mheap).freeSpanLocked -> runtime.(*mTreap).insert (0.43s)"]
N17 -> N74 [label=" 0.41s" color="#b2b1ac" tooltip="runtime.scanobject -> runtime.greyobject (0.41s)" labeltooltip="runtime.scanobject -> runtime.greyobject (0.41s)"]
N75 -> N67 [label=" 0.40s" color="#b2b1ac" tooltip="runtime.notewakeup ... runtime.stdcall1 (0.40s)" labeltooltip="runtime.notewakeup ... runtime.stdcall1 (0.40s)" style="dotted"]
N52 -> N80 [label=" 0.38s" color="#b2b1ac" tooltip="runtime.markroot ... runtime.scanstack (0.38s)" labeltooltip="runtime.markroot ... runtime.scanstack (0.38s)" style="dotted"]
N2 -> N71 [label=" 0.37s" color="#b2b1ac" tooltip="runtime.mallocgc -> runtime.makeSpanClass (0.37s)" labeltooltip="runtime.mallocgc -> runtime.makeSpanClass (0.37s)"]
N80 -> N51 [label=" 0.35s" color="#b2b1ad" tooltip="runtime.scanstack ... runtime.gentraceback (0.35s)" labeltooltip="runtime.scanstack ... runtime.gentraceback (0.35s)" style="dotted"]
N36 -> N69 [label=" 0.34s" color="#b2b1ad" tooltip="runtime.schedule -> runtime.findrunnable (0.34s)" labeltooltip="runtime.schedule -> runtime.findrunnable (0.34s)"]
N36 -> N75 [label=" 0.34s" color="#b2b1ad" tooltip="runtime.schedule ... runtime.notewakeup (0.34s)" labeltooltip="runtime.schedule ... runtime.notewakeup (0.34s)" style="dotted"]
N45 -> N31 [label=" 0.33s" color="#b2b1ad" tooltip="math/rand.(*lockedSource).Int63 -> math/rand.(*rngSource).Int63 (0.33s)" labeltooltip="math/rand.(*lockedSource).Int63 -> math/rand.(*rngSource).Int63 (0.33s)"]
N51 -> N76 [label=" 0.33s" color="#b2b1ad" tooltip="runtime.gentraceback ... runtime.pcvalue (0.33s)" labeltooltip="runtime.gentraceback ... runtime.pcvalue (0.33s)" style="dotted"]
N32 -> N68 [label=" 0.29s" color="#b2b1ae" tooltip="runtime.(*mcache).nextFree -> runtime.(*mspan).nextFreeIndex (0.29s)" labeltooltip="runtime.(*mcache).nextFree -> runtime.(*mspan).nextFreeIndex (0.29s)"]
N59 -> N49 [label=" 0.29s" color="#b2b1ae" tooltip="runtime.(*mheap).allocSpanLocked -> runtime.(*mheap).freeSpanLocked (0.29s)" labeltooltip="runtime.(*mheap).allocSpanLocked -> runtime.(*mheap).freeSpanLocked (0.29s)"]
N70 -> N52 [label=" 0.29s" color="#b2b1ae" tooltip="runtime.gcDrainN -> runtime.markroot (0.29s)" labeltooltip="runtime.gcDrainN -> runtime.markroot (0.29s)"]
N70 -> N17 [label=" 0.29s" color="#b2b1ae" tooltip="runtime.gcDrainN -> runtime.scanobject (0.29s)" labeltooltip="runtime.gcDrainN -> runtime.scanobject (0.29s)"]
N23 -> N28 [label=" 0.28s" color="#b2b1ae" tooltip="runtime.(*mcentral).cacheSpan -> runtime.lock (0.28s)" labeltooltip="runtime.(*mcentral).cacheSpan -> runtime.lock (0.28s)"]
N57 -> N48 [label=" 0.27s" color="#b2b1ae" tooltip="runtime.newstack ... runtime.goschedImpl (0.27s)" labeltooltip="runtime.newstack ... runtime.goschedImpl (0.27s)" style="dotted"]
N4 -> N39 [label=" 0.24s" color="#b2b1ae" tooltip="sampler.(*Sampler).color4Ray -> vector.(*Vec3).Normalize (0.24s)" labeltooltip="sampler.(*Sampler).color4Ray -> vector.(*Vec3).Normalize (0.24s)"]
N56 -> N9 [label=" 0.22s" color="#b2b1af" tooltip="primitives.(*DielectricMaterial).Bounce ... vector.(*Vec3).Sub (0.22s)" labeltooltip="primitives.(*DielectricMaterial).Bounce ... vector.(*Vec3).Sub (0.22s)" style="dotted"]
N2 -> N16 [label=" 0.21s" color="#b2b1af" tooltip="runtime.mallocgc -> runtime.memclrNoHeapPointers (0.21s)" labeltooltip="runtime.mallocgc -> runtime.memclrNoHeapPointers (0.21s)"]
N55 -> N19 [label=" 0.19s" color="#b2b1af" tooltip="primitives.(*MetallicMaterial).Bounce -> vector.RandUnitVec3 (0.19s)" labeltooltip="primitives.(*MetallicMaterial).Bounce -> vector.RandUnitVec3 (0.19s)"]
N41 -> N66 [label=" 0.17s" color="#b2b2af" tooltip="runtime.findObject -> runtime.spanOf (0.17s)" labeltooltip="runtime.findObject -> runtime.spanOf (0.17s)"]
N60 -> N40 [label=" 0.14s" color="#b2b2b0" tooltip="runtime.(*mheap).freeSpan.func1 -> runtime.unlock (0.14s)" labeltooltip="runtime.(*mheap).freeSpan.func1 -> runtime.unlock (0.14s)"]
N13 -> N38 [label=" 0.13s" color="#b2b2b0" tooltip="runtime.heapBitsSetType -> runtime.arenaIndex (0.13s)" labeltooltip="runtime.heapBitsSetType -> runtime.arenaIndex (0.13s)"]
N62 -> N41 [label=" 0.13s" color="#b2b2b0" tooltip="runtime.scanblock -> runtime.findObject (0.13s)" labeltooltip="runtime.scanblock -> runtime.findObject (0.13s)"]
N23 -> N40 [label=" 0.12s" color="#b2b2b0" tooltip="runtime.(*mcentral).cacheSpan -> runtime.unlock (0.12s)" labeltooltip="runtime.(*mcentral).cacheSpan -> runtime.unlock (0.12s)"]
N53 -> N28 [label=" 0.11s" color="#b2b2b0" tooltip="runtime.(*mheap).alloc_m -> runtime.lock (0.11s)" labeltooltip="runtime.(*mheap).alloc_m -> runtime.lock (0.11s)"]
N34 -> N58 [label=" 0.11s" color="#b2b2b0" tooltip="runtime.(*mspan).sweep -> runtime.newMarkBits (0.11s)" labeltooltip="runtime.(*mspan).sweep -> runtime.newMarkBits (0.11s)"]
N64 -> N66 [label=" 0.11s" color="#b2b2b0" tooltip="runtime.gcmarknewobject ... runtime.spanOf (0.11s)" labeltooltip="runtime.gcmarknewobject ... runtime.spanOf (0.11s)" style="dotted"]
N56 -> N25 [label=" 0.10s" color="#b2b2b0" tooltip="primitives.(*DielectricMaterial).Bounce -> ray.NewRay (0.10s)" labeltooltip="primitives.(*DielectricMaterial).Bounce -> ray.NewRay (0.10s)"]
N54 -> N28 [label=" 0.10s" color="#b2b2b0" tooltip="runtime.(*mcentral).freeSpan -> runtime.lock (0.10s)" labeltooltip="runtime.(*mcentral).freeSpan -> runtime.lock (0.10s)"]
N55 -> N10 [label=" 0.09s" color="#b2b2b1" tooltip="primitives.(*MetallicMaterial).Bounce -> vector.(*Vec3).Add (0.09s)" labeltooltip="primitives.(*MetallicMaterial).Bounce -> vector.(*Vec3).Add (0.09s)"]
N69 -> N28 [label=" 0.09s" color="#b2b2b1" tooltip="runtime.findrunnable ... runtime.lock (0.09s)" labeltooltip="runtime.findrunnable ... runtime.lock (0.09s)" style="dotted"]
N48 -> N28 [label=" 0.08s" color="#b2b2b1" tooltip="runtime.goschedImpl -> runtime.lock (0.08s)" labeltooltip="runtime.goschedImpl -> runtime.lock (0.08s)"]
N48 -> N40 [label=" 0.08s" color="#b2b2b1" tooltip="runtime.goschedImpl -> runtime.unlock (0.08s)" labeltooltip="runtime.goschedImpl -> runtime.unlock (0.08s)"]
N55 -> N25 [label=" 0.07s" color="#b2b2b1" tooltip="primitives.(*MetallicMaterial).Bounce -> ray.NewRay (0.07s)" labeltooltip="primitives.(*MetallicMaterial).Bounce -> ray.NewRay (0.07s)"]
N21 -> N29 [label=" 0.07s" color="#b2b2b1" tooltip="runtime.(*mcentral).grow -> runtime.heapBitsForAddr (0.07s)" labeltooltip="runtime.(*mcentral).grow -> runtime.heapBitsForAddr (0.07s)"]
N51 -> N62 [label=" 0.07s" color="#b2b2b1" tooltip="runtime.gentraceback ... runtime.scanblock (0.07s)" labeltooltip="runtime.gentraceback ... runtime.scanblock (0.07s)" style="dotted"]
N23 -> N34 [label=" 0.06s" color="#b2b2b1" tooltip="runtime.(*mcentral).cacheSpan -> runtime.(*mspan).sweep (0.06s)" labeltooltip="runtime.(*mcentral).cacheSpan -> runtime.(*mspan).sweep (0.06s)"]
N53 -> N40 [label=" 0.06s" color="#b2b2b1" tooltip="runtime.(*mheap).alloc_m -> runtime.unlock (0.06s)" labeltooltip="runtime.(*mheap).alloc_m -> runtime.unlock (0.06s)"]
N61 -> N16 [label=" 0.06s" color="#b2b2b1" tooltip="runtime.heapBits.initSpan -> runtime.memclrNoHeapPointers (0.06s)" labeltooltip="runtime.heapBits.initSpan -> runtime.memclrNoHeapPointers (0.06s)"]
N7 -> N75 [label=" 0.06s" color="#b2b2b1" tooltip="runtime.systemstack ... runtime.notewakeup (0.06s)" labeltooltip="runtime.systemstack ... runtime.notewakeup (0.06s)" style="dotted"]
}