|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -e |
| 4 | + |
| 5 | +echo "==========================================" |
| 6 | +echo "Chatbot Build Benchmark" |
| 7 | +echo "==========================================" |
| 8 | +echo "" |
| 9 | + |
| 10 | +# C Version Benchmark |
| 11 | +echo "C Version Benchmark" |
| 12 | +echo "------------------------------------------" |
| 13 | + |
| 14 | +cd c |
| 15 | +echo "Cleaning..." |
| 16 | +make clean > /dev/null 2>&1 |
| 17 | + |
| 18 | +echo "Building C version..." |
| 19 | +C_START=$(date +%s%N) |
| 20 | +make > /dev/null 2>&1 |
| 21 | +C_END=$(date +%s%N) |
| 22 | +C_TIME=$(( (C_END - C_START) / 1000000 )) # Convert to milliseconds |
| 23 | + |
| 24 | +C_SIZE=$(ls -lh chat | awk '{print $5}') |
| 25 | + |
| 26 | +echo "Build time: ${C_TIME}ms" |
| 27 | +echo "Executable size: ${C_SIZE}" |
| 28 | + |
| 29 | +cd .. |
| 30 | +echo "" |
| 31 | + |
| 32 | +# Zig Version Benchmark |
| 33 | +echo "Zig Version Benchmark" |
| 34 | +echo "------------------------------------------" |
| 35 | + |
| 36 | +cd zig |
| 37 | +echo "Cleaning..." |
| 38 | +rm -rf zig-out .zig-cache > /dev/null 2>&1 |
| 39 | +mkdir -p zig-out/bin |
| 40 | + |
| 41 | +echo "Building Zig version..." |
| 42 | +ZIG_START=$(date +%s%N) |
| 43 | +zig build-exe src/main.zig -femit-bin=zig-out/bin/chat > /dev/null 2>&1 |
| 44 | +ZIG_END=$(date +%s%N) |
| 45 | +ZIG_TIME=$(( (ZIG_END - ZIG_START) / 1000000 )) # Convert to milliseconds |
| 46 | + |
| 47 | +ZIG_SIZE=$(ls -lh zig-out/bin/chat | awk '{print $5}') |
| 48 | + |
| 49 | +echo "Build time: ${ZIG_TIME}ms" |
| 50 | +echo "Executable size: ${ZIG_SIZE}" |
| 51 | + |
| 52 | +cd .. |
| 53 | +echo "" |
| 54 | + |
| 55 | +# Comparison |
| 56 | +echo "Comparison" |
| 57 | +echo "------------------------------------------" |
| 58 | +if [ $C_TIME -lt $ZIG_TIME ]; then |
| 59 | + RATIO=$(echo "scale=2; $ZIG_TIME / $C_TIME" | bc) |
| 60 | + echo "C version is ${RATIO}x faster" |
| 61 | +else |
| 62 | + RATIO=$(echo "scale=2; $C_TIME / $ZIG_TIME" | bc) |
| 63 | + echo "Zig version is ${RATIO}x faster" |
| 64 | +fi |
| 65 | + |
| 66 | +echo "" |
| 67 | +echo "Summary:" |
| 68 | +echo " C: ${C_TIME}ms, ${C_SIZE}" |
| 69 | +echo " Zig: ${ZIG_TIME}ms, ${ZIG_SIZE}" |
0 commit comments