Initial release: Go Jdenticon library v0.1.0
- Core library with SVG and PNG generation - CLI tool with generate and batch commands - Cross-platform path handling for Windows compatibility - Comprehensive test suite with integration tests
This commit is contained in:
58
benchmark/run-go-benchmark.sh
Executable file
58
benchmark/run-go-benchmark.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Run Go benchmark and save results
|
||||
echo "=== Go jdenticon Performance Benchmark ==="
|
||||
echo "Running Go benchmark..."
|
||||
|
||||
# Run the benchmark and capture output
|
||||
BENCHMARK_OUTPUT=$(cd .. && go test -run="^$" -bench=BenchmarkGenerate64pxIcon -benchmem ./jdenticon 2>&1)
|
||||
|
||||
echo "$BENCHMARK_OUTPUT"
|
||||
|
||||
# Parse benchmark results
|
||||
# Example output: BenchmarkGenerate64pxIcon-10 92173 12492 ns/op 13174 B/op 239 allocs/op
|
||||
BENCHMARK_LINE=$(echo "$BENCHMARK_OUTPUT" | grep BenchmarkGenerate64pxIcon)
|
||||
ITERATIONS=$(echo "$BENCHMARK_LINE" | awk '{print $2}')
|
||||
NS_PER_OP=$(echo "$BENCHMARK_LINE" | awk '{print $3}')
|
||||
BYTES_PER_OP=$(echo "$BENCHMARK_LINE" | awk '{print $5}')
|
||||
ALLOCS_PER_OP=$(echo "$BENCHMARK_LINE" | awk '{print $7}')
|
||||
|
||||
# Convert nanoseconds to milliseconds and microseconds
|
||||
TIME_PER_ICON_MS=$(echo "scale=4; $NS_PER_OP / 1000000" | bc | awk '{printf "%.4f", $0}')
|
||||
TIME_PER_ICON_US=$(echo "scale=2; $NS_PER_OP / 1000" | bc | awk '{printf "%.2f", $0}')
|
||||
ICONS_PER_SECOND=$(echo "scale=2; 1000000000 / $NS_PER_OP" | bc)
|
||||
|
||||
echo ""
|
||||
echo "=== go-jdenticon Results ==="
|
||||
echo "Iterations: $ITERATIONS"
|
||||
echo "Time per icon: ${TIME_PER_ICON_MS} ms (${TIME_PER_ICON_US} μs)"
|
||||
echo "Throughput: ${ICONS_PER_SECOND} icons/sec"
|
||||
echo "Memory per icon: $BYTES_PER_OP bytes"
|
||||
echo "Allocations per icon: $ALLOCS_PER_OP allocs"
|
||||
|
||||
# Create JSON results
|
||||
cat > results-go.json << EOF
|
||||
{
|
||||
"implementation": "go-jdenticon",
|
||||
"timestamp": "$(date -u +"%Y-%m-%dT%H:%M:%S.000Z")",
|
||||
"goVersion": "$(go version | awk '{print $3}')",
|
||||
"config": {
|
||||
"iconSize": 64,
|
||||
"numInputs": 1000,
|
||||
"benchmarkIterations": $ITERATIONS
|
||||
},
|
||||
"performance": {
|
||||
"nsPerOp": $NS_PER_OP,
|
||||
"timePerIconMs": $TIME_PER_ICON_MS,
|
||||
"timePerIconUs": $TIME_PER_ICON_US,
|
||||
"iconsPerSecond": $ICONS_PER_SECOND
|
||||
},
|
||||
"memory": {
|
||||
"bytesPerOp": $(echo "$BYTES_PER_OP" | sed 's/[^0-9]//g'),
|
||||
"allocsPerOp": $(echo "$ALLOCS_PER_OP" | sed 's/[^0-9]//g')
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo "Results saved to: results-go.json"
|
||||
Reference in New Issue
Block a user