Skip to content

Commit 9a054bd

Browse files
committed
refactor(benchmark):优化基准测试脚本与抽象类定义- 将 Bench 类改为抽象类并定义抽象方法
- 改进 GitHub Actions 中的日志解析逻辑 - 修正不同测试类型对应的日志文件名匹配问题 - 增强对测试结果时间与 OPS 的提取准确性 - 支持 asyncGet、asyncSet、concurrentGet 和 concurrentSet 测试类型 - 提高脚本对不同日志格式的兼容性
1 parent bcd0fcc commit 9a054bd

2 files changed

Lines changed: 53 additions & 9 deletions

File tree

.github/workflows/benchmark.yml

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,22 @@ jobs:
7575
local client_count=$2
7676
local log_file="${file_prefix}_${client_count}.log"
7777
78-
if [ -f "$log_file" ] && grep -q "${file_prefix#*_} cost:" "$log_file"; then
79-
local time=$(grep "${file_prefix#*_} cost:" "$log_file" | awk '{print $5}')
80-
local ops=$(grep "${file_prefix#*_} ops/s:" "$log_file" | awk '{print $5}')
78+
if [ -f "$log_file" ]; then
79+
# 提取时间 (cost)
80+
local time_line=$(grep "\] ${file_prefix#*_} cost:" "$log_file" | head -1)
81+
local time="-"
82+
if [ -n "$time_line" ]; then
83+
# 处理不同的格式:xxxms 或 xxx
84+
time=$(echo "$time_line" | awk '{print $NF}' | sed 's/ms$//' | sed 's/[^0-9\-]*//g')
85+
fi
86+
87+
# 提取OPS
88+
local ops_line=$(grep "\] ${file_prefix#*_} ops/s:" "$log_file" | head -1)
89+
local ops="-"
90+
if [ -n "$ops_line" ]; then
91+
ops=$(echo "$ops_line" | awk '{print $NF}' | sed 's/[^0-9\-]*//g')
92+
fi
93+
8194
echo "$time/$ops"
8295
else
8396
echo "-/-"
@@ -98,10 +111,33 @@ jobs:
98111
echo "|------------|------------------------|-----------------------|" >> benchmark-report.md
99112
100113
for client_count in 1 8 128 1024; do
101-
redisun_data=$(extract_data "redisun_${test_type}" "$client_count")
102-
redisson_data=$(extract_data "redisson_${test_type}" "$client_count")
103-
jedis_data=$(extract_data "jedis_${test_type}" "$client_count")
104-
lettuce_data=$(extract_data "lettuce_${test_type}" "$client_count")
114+
# 修正文件前缀以匹配实际的日志文件名
115+
case "${test_type}" in
116+
"concurrent_set")
117+
redisun_data=$(extract_data "redisun_concurrentSet" "$client_count")
118+
redisson_data=$(extract_data "redisson_concurrentSet" "$client_count")
119+
jedis_data=$(extract_data "jedis_concurrentSet" "$client_count")
120+
lettuce_data=$(extract_data "lettuce_concurrentSet" "$client_count")
121+
;;
122+
"async_set")
123+
redisun_data=$(extract_data "redisun_asyncSet" "$client_count")
124+
redisson_data=$(extract_data "redisson_asyncSet" "$client_count")
125+
jedis_data=$(extract_data "jedis_asyncSet" "$client_count")
126+
lettuce_data=$(extract_data "lettuce_asyncSet" "$client_count")
127+
;;
128+
"concurrent_get")
129+
redisun_data=$(extract_data "redisun_concurrentGet" "$client_count")
130+
redisson_data=$(extract_data "redisson_concurrentGet" "$client_count")
131+
jedis_data=$(extract_data "jedis_concurrentGet" "$client_count")
132+
lettuce_data=$(extract_data "lettuce_concurrentGet" "$client_count")
133+
;;
134+
"async_get")
135+
redisun_data=$(extract_data "redisun_asyncGet" "$client_count")
136+
redisson_data=$(extract_data "redisson_asyncGet" "$client_count")
137+
jedis_data=$(extract_data "jedis_asyncGet" "$client_count")
138+
lettuce_data=$(extract_data "lettuce_asyncGet" "$client_count")
139+
;;
140+
esac
105141
106142
redisun_time=$(echo $redisun_data | cut -d'/' -f1)
107143
redisun_ops=$(echo $redisun_data | cut -d'/' -f2)

src/test/java/tech/smartboot/redisun/bench/Bench.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,22 @@
44
* @author 三刀
55
* @version v1.0 10/23/25
66
*/
7-
public class Bench {
7+
public abstract class Bench {
88
// 为了在GitHub Actions环境中更快地运行测试,减少测试数据量
99
protected static final int SET_COUNT = 50000;
1010

1111
protected static final int CONCURRENT_CLIENT_COUNT = Integer.parseInt(System.getProperty("client.count", "1"));
1212

1313
protected static final String ADDRESS = "redis://127.0.0.1:6379";
14-
14+
1515
// 预热次数
1616
protected static final int WARMUP_COUNT = 1000;
17+
18+
public abstract void asyncSet() throws Throwable;
19+
20+
public abstract void asyncGet() throws Throwable;
21+
22+
public abstract void concurrentSet() throws Throwable;
23+
24+
public abstract void concurrentGet() throws Throwable;
1725
}

0 commit comments

Comments
 (0)