mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-11-04 12:31:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Profiling Lazygit
 | 
						|
 | 
						|
If you want to investigate what's contributing to CPU or memory usage, start
 | 
						|
lazygit with the `-profile` command line flag. This tells it to start an
 | 
						|
integrated web server that listens for profiling requests.
 | 
						|
 | 
						|
## Save profile data
 | 
						|
 | 
						|
### CPU
 | 
						|
 | 
						|
While lazygit is running with the `-profile` flag, perform a CPU profile and
 | 
						|
save it to a file by running this command in another terminal window:
 | 
						|
 | 
						|
```sh
 | 
						|
curl -o cpu.out http://127.0.0.1:6060/debug/pprof/profile
 | 
						|
```
 | 
						|
 | 
						|
By default, it profiles for 30 seconds. To change the duration, use
 | 
						|
 | 
						|
```sh
 | 
						|
curl -o cpu.out 'http://127.0.0.1:6060/debug/pprof/profile?seconds=60'
 | 
						|
```
 | 
						|
 | 
						|
### Memory
 | 
						|
 | 
						|
To save a heap profile (containing information about all memory allocated so
 | 
						|
far since startup), use
 | 
						|
 | 
						|
```sh
 | 
						|
curl -o mem.out http://127.0.0.1:6060/debug/pprof/heap
 | 
						|
```
 | 
						|
 | 
						|
Sometimes it can be useful to get a delta log, i.e. to see how memory usage
 | 
						|
developed from one point in time to another. For that, use
 | 
						|
 | 
						|
```sh
 | 
						|
curl -o mem.out 'http://127.0.0.1:6060/debug/pprof/heap?seconds=20'
 | 
						|
```
 | 
						|
 | 
						|
This will log the memory usage difference between now and 20 seconds later, so
 | 
						|
it gives you 20 seconds to perform the action in lazygit that you are interested
 | 
						|
in measuring.
 | 
						|
 | 
						|
## View profile data
 | 
						|
 | 
						|
To display the profile data, you can either use speedscope.app, or the pprof
 | 
						|
tool that comes with go. I prefer the former because it has a nicer UI and is a
 | 
						|
little more powerful; however, I have seen cases where it wasn't able to load a
 | 
						|
profile for some reason, in which case it's good to have the pprof tool as a
 | 
						|
fallback.
 | 
						|
 | 
						|
### Speedscope.app
 | 
						|
 | 
						|
Go to https://www.speedscope.app/ in your browser, and drag the saved profile
 | 
						|
onto the browser window. Refer to [the
 | 
						|
documentation](https://github.com/jlfwong/speedscope?tab=readme-ov-file#usage)
 | 
						|
for how to navigate the data.
 | 
						|
 | 
						|
### Pprof tool
 | 
						|
 | 
						|
To view a profile that you saved as `cpu.out`, use
 | 
						|
 | 
						|
```sh
 | 
						|
go tool pprof -http=:8080 cpu.out
 | 
						|
```
 | 
						|
 | 
						|
By default this shows the graph view, which I don't find very useful myself.
 | 
						|
Choose "Flame Graph" from the View menu to show a much more useful
 | 
						|
representation of the data.
 |