 So first of all, they had GameMaker Studio using GameMaker Studio, and GameMaker Studio if you run the profiler, it generates something like this file. So I've never seen a profiler before, so it shows you each method, how long it takes in that method, and then if you call some other methods, it will sort of be nested inside. So here you can see like, here's like the names are removed. So method A took like 237 milliseconds. Then within that, like, 135 milliseconds was spent in method B. And then method B called method C, and C called C, and so on. This is like a step trade, kind of. I don't know what is step trade, it's like a call tree, kind of. Unfortunately, that doesn't work for plain graphs, because plain graphs use something called the folded step format. So I need to write a bill, this is the same file, just now. And then we can transfer that into the folded steps format, and then there's a small Python script. This is called step-to-lapse. This is the folded steps format. The folded steps format is, so every line is a stack, stack profile. The number is the, how long it's spent over there. So this is a straight forward. So except A now just shows the time in A alone, without not a whole, not a whole thing. So it was 200, so this is 273 minus 125, that is the number just. And if you draw that, even the thing graph, which you can download from Brandon Gregg, is a pro script which you can run. Try it, try it, try it, try it. It's like this half of the full graph, full script. This gives you an SVG file. Which, oh, let's look at this one. Mine looks like this, but there's a little less of this. But if you draw the more realistic one, it's something like this. So it shows you a marker. So you can look at the type of these colors, so it represents the depth of the false text. And the width represents the amount of time, or whatever resource, could be CPM, could be memory, as I expect. And you can do things like control-hand, you can search for the surname, like the in, you can see, you know, these are the passcotted in, and it shows you how much time was taken. So you can also do some small thing at the bottom, which shows you not much time. And so actually the time is actually spent sort of at the top. When you see the top of the part where there's nothing on top, so this part is actually spent on the, as I call it, the library contains the regular CPU. So you should look at the widest function, it's where most of the time is taken. But you might have functions that are called, as the sub-child, and the child's one function in some other places. So if you do a search, you can see all of the other places. So this is a nice visual way to visualize the profile instead of the regular text format, which is a little bit hard to see sometimes. Okay, that's it. So check out, yeah, free graph. I think they have some built-in stack collects for different things, like kernel per phrase, J-stacks are cool as well. So they didn't have one for game developers to use. This was a small one for game developers to use. Right, that's it. So the few things that generate the focus stacks, and the rest is left to the thing graph program. There it is. Okay, thank you. This is one of the colors in this program. The colors have no meaning. They just have to be differentiated. They could have meaning, but I think if you run the thing graph program by talking has no meaning. It's just to differentiate the different bars. Yeah, I think I'm asking a question on the meaning of something. I think the answer would be that. But it could convey a particular meaning of this course. But one thing to note, maybe some... I'll give you an answer. Yeah, we'll just focus on... Let me show you this one. See, we just want to see this graph. Oh, it just zooms into that part, of course. So if you sort of drill in on that, oh, what's happening here? This was floating here and so on, and then this is taking so much time and things like that. So you have the question? Yeah. It's like a visual exploration of the profile output. So I mean, if you look at visual, you can see things like width easier than you can see like 53% and things like that. So it's much more easier to see the problems. Not particularly, so I think there wasn't... There hasn't been that many people who work with profiles. Usually, you just see like a tree of numbers. Then graph is not a few visualizations. Sorry? No, no, but that's the framework for drawing the paper. So this is the actual visualization, like a feedback visualization. Yeah, yeah, so flame graph is a kind of visualization, not the framework to draw visualizations, if that makes sense. I could draw the same visualizations in D3, for example, but in this case, it's a flame graph program that outputs by default an SVG file. The output of the flame graph program is an SVG file. So SVG, you can interact with it. I think that's why they chose SVG. You can click on it. But it's like a PNG kind of like a graphics file. No questions? No? Is there any sort of real-time version where you could buy, like every second, something like that, and SVG and everything? Not that I know of, but this is more like a static thing. Yeah, but you could definitely have some kind of pipeline where you generate like one flame graph per second. No, not that I know of. But you could write a simple pipeline, I would think. It's not too complicated. You just need to chop up your files into whatever batch size and then just pipe it into the pipeline to fold the stacks and generate the SVGs. I think there was something, the idea of a differential frame graph, I think you were talking more like looking at the difference between two instances in time, possibly, right? Not just to see the thing changing, but look at the difference. There's actually something called differential. Yeah, but usually you want to collect like samples for a certain amount of time, so you have some statistics, like how many seconds this is called. If it's like real-time, you may not have enough data to like draw the picture. Like if you do video games, for example, I think you want to capture one frame. That would be one frame. But if you're loading data, then you want to do what you say, which is capturing 10 to 20 seconds. The target profiler this is used for is more like the sampling profiler. So sampling profilers will take a snapshot of the stack at sort of intervals as your program executes. So it just saves the snapshot as one line in the folded stacks format. That's like one snapshot. So these profiles will take sample possible snapshots per second and you'll build a large. Okay, I think I have a tiny little bit of time. I'll clear up one confusion people have about the flame graph. There's also the question about how do you order the things left to right, actually. Right now, if I'm not wrong, I think it's alphabetically ordered. So the ordering left to right also has no particular meaning. It's alphabetically sorted from left to right. The child nodes. It doesn't have to do with how it actually works in the actual calls. It's just sorted from left to right. It seems to me that the one thing that counts here in this is if one of the leaves, let's say, has a substantial size, but you can't see if it has substantial size because it's slow. One of the leaves. It will be very fat. If it has a long time, it will be very fat leaves, the width. Yeah, but you can't see if it's fat because it's slow or it's fat because it's four million times. Ah, that's true. That's true. That's true. Good point. Okay, I think that's all the time I have. So thanks for all the questions.