64 lines
2.4 KiB
Bash
Executable File
64 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
#
|
||
# StarForth — Steady-State Virtual Machine Runtime
|
||
#
|
||
# Copyright (c) 2023–2025 Robert A. James
|
||
# All rights reserved.
|
||
#
|
||
# This file is part of the StarForth project.
|
||
#
|
||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
#
|
||
# You may obtain a copy of the License at:
|
||
# https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
|
||
#
|
||
# This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# express or implied, including but not limited to the warranties of
|
||
# merchantability, fitness for a particular purpose, and noninfringement.
|
||
#
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
#
|
||
# StarForth — Steady-State Virtual Machine Runtime
|
||
# Copyright (c) 2023–2025 Robert A. James
|
||
# All rights reserved.
|
||
#
|
||
# This file is part of the StarForth project.
|
||
#
|
||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
#
|
||
# You may obtain a copy of the License at:
|
||
# https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
|
||
#
|
||
# This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# express or implied, including but not limited to the warranties of
|
||
# merchantability, fitness for a particular purpose, and noninfringement.
|
||
#
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
#
|
||
#
|
||
|
||
# StarForth perf → REPORT.txt (symbols, no script args)
|
||
set -euo pipefail
|
||
|
||
EXE="./build/starforth" # executable ONLY
|
||
# Target just Control Words module for detailed profiling
|
||
ARGS=(--log-error --run-tests) # We need to run specific control word tests
|
||
|
||
echo "[CLEAN]"; make clean
|
||
echo "[BUILD performance w/ symbols for profiling]"
|
||
make CFLAGS="-std=c99 -O3 -g -fno-omit-frame-pointer -DSTARFORTH_PERFORMANCE -DNDEBUG -march=native -Wall -Werror -Iinclude -Isrc/word_source -Isrc/test_runner/include -DSTRICT_PTR=1" LDFLAGS=""
|
||
|
||
[[ -x "$EXE" ]] || { echo "ERROR: $EXE missing/not executable"; exit 2; }
|
||
|
||
echo "[RECORD] perf…"
|
||
rm -f perf.data REPORT.txt
|
||
perf record -F 999 -g --call-graph dwarf -e cycles:u -- "$EXE" "${ARGS[@]}"
|
||
|
||
echo "[REPORT → REPORT.txt]"
|
||
perf report --stdio --no-children --percent-limit 0 --sort overhead,symbol,dso > REPORT.txt
|
||
echo "DONE → REPORT.txt"; head -40 REPORT.txt || true
|