27 lines
		
	
	
		
			864 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			864 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| set -e
 | |
| 
 | |
| case "$1" in
 | |
|   cpu|object) STACKPROF_MODE="$1"; shift ;;
 | |
|   *) STACKPROF_MODE="cpu" ;;
 | |
| esac
 | |
| 
 | |
| export BENCHMARK=true
 | |
| command -v stackprof > /dev/null || script/bootstrap
 | |
| 
 | |
| TEST_SCRIPT="Jekyll::Commands::Build.process({'source' => 'docs'})"
 | |
| PROF_OUTPUT_FILE=tmp/stackprof-${STACKPROF_MODE}-$(date +%Y%m%d%H%M).dump
 | |
| 
 | |
| GC_BEFORE="puts 'GC Stats:'; puts JSON.pretty_generate(GC.stat); GC.disable"
 | |
| GC_AFTER="puts 'GC Stats:'; GC.start(full_mark: true, immediate_sweep: false); puts JSON.pretty_generate(GC.stat);"
 | |
| 
 | |
| echo Stackprof Mode: $STACKPROF_MODE
 | |
| test -f "$PROF_OUTPUT_FILE" || {
 | |
|   bundle exec ruby -r./lib/jekyll -rstackprof -rjson \
 | |
|     -e "StackProf.run(mode: :${STACKPROF_MODE}, interval: 100, out: '${PROF_OUTPUT_FILE}') { ${GC_BEFORE}; ${TEST_SCRIPT}; ${GC_AFTER}; }"
 | |
| }
 | |
| 
 | |
| set -x
 | |
| bundle exec stackprof $PROF_OUTPUT_FILE $@ --sort-total
 |