大模型代码实战:GLM5 vs DeepSeek 3.2

大模型代码实战:GLM5 vs DeepSeek 3.2

同样的提示词,不同的模型,代码质量差多少?我用 5 个真实任务做了对比测试。

测试环境

项目 配置
GLM5 智谱 AI 官方 API,temperature=0.7
DeepSeek 3.2 官方 API,temperature=0.7
测试时间 2026-03-05
评判标准 正确性、可读性、健壮性、注释质量

任务一:Python 数据处理

需求: 读取 CSV 文件,统计每列缺失值比例,输出可视化图表。

GLM5 表现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd
import matplotlib.pyplot as plt

def analyze_missing_data(file_path):
"""分析数据缺失情况"""
df = pd.read_csv(file_path)
missing_ratio = df.isnull().sum() / len(df) * 100

# 可视化
plt.figure(figsize=(10, 6))
missing_ratio.plot(kind='bar')
plt.title('Missing Data Ratio by Column')
plt.ylabel('Percentage (%)')
plt.tight_layout()
plt.savefig('missing_data.png')

return missing_ratio

优点: 代码简洁,注释清晰
缺点: 没有异常处理,文件不存在时会崩溃

DeepSeek 3.2 表现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path

def analyze_missing_data(file_path, output_path='missing_data.png'):
"""
分析 CSV 文件的缺失数据情况

Args:
file_path: CSV 文件路径
output_path: 输出图片路径

Returns:
pd.Series: 各列缺失值比例

Raises:
FileNotFoundError: 文件不存在时
ValueError: 文件为空或不是有效 CSV
"""
# 验证输入
path = Path(file_path)
if not path.exists():
raise FileNotFoundError(f"文件不存在: {file_path}")

try:
df = pd.read_csv(file_path)
except Exception as e:
raise ValueError(f"无法读取 CSV 文件: {e}")

if df.empty:
raise ValueError("CSV 文件为空")

# 计算缺失值比例
missing_ratio = (df.isnull().sum() / len(df) * 100).round(2)

# 过滤无缺失的列,避免图表过于稀疏
missing_ratio = missing_ratio[missing_ratio > 0]

if len(missing_ratio) == 0:
print("数据完整,无缺失值")
return pd.Series()

# 可视化
plt.figure(figsize=(12, 6))
ax = missing_ratio.plot(kind='bar', color='coral')
plt.title('Missing Data Ratio by Column', fontsize=14)
plt.xlabel('Columns', fontsize=12)
plt.ylabel('Missing Percentage (%)', fontsize=12)
plt.xticks(rotation=45, ha='right')

# 添加数值标签
for i, v in enumerate(missing_ratio):
ax.text(i, v + 0.5, f'{v}%', ha='center', va='bottom')

plt.tight_layout()
plt.savefig(output_path, dpi=150, bbox_inches='tight')
plt.close()

print(f"图表已保存至: {output_path}")
return missing_ratio

if __name__ == "__main__":
# 使用示例
result = analyze_missing_data("data.csv")
print(result)

优点: 异常处理完善,文档字符串详细,可视化更美观
缺点: 代码量较大,对于简单任务可能过于复杂

第一轮评分

维度 GLM5 DeepSeek 3.2
正确性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
可读性 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
健壮性 ⭐⭐⭐ ⭐⭐⭐⭐⭐
注释质量 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
综合 4.0 4.75

任务二:React 组件开发

需求: 实现一个带搜索过滤的下拉选择组件。

GLM5 表现

生成了功能完整的组件,使用了 useState 和 useEffect,但 useEffect 的依赖项处理有问题,可能导致不必要的重渲染。

DeepSeek 3.2 表现

不仅代码正确,还主动提供了:

  • TypeScript 类型定义
  • 键盘导航支持(上下箭头、回车选择)
  • 防抖处理优化搜索性能
  • 无障碍属性(aria-*)

第二轮评分

维度 GLM5 DeepSeek 3.2
功能完整度 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
React 最佳实践 ⭐⭐⭐ ⭐⭐⭐⭐⭐
TypeScript 支持 ⭐⭐ ⭐⭐⭐⭐⭐
性能优化 ⭐⭐⭐ ⭐⭐⭐⭐⭐
综合 3.25 4.75

任务三:SQL 查询优化

需求: 找出连续 3 天登录的用户。

GLM5 表现

使用了窗口函数,思路正确,但 SQL 可读性一般,且没有考虑性能优化。

DeepSeek 3.2 表现

提供了两种方案:

  1. 窗口函数方案(简洁)
  2. 自连接方案(兼容旧版 MySQL)

还附带了执行计划分析和索引建议。

任务四:算法题

需求: 实现 LRU 缓存。

两者都能正确实现,但 DeepSeek 3.2 的代码更 Pythonic,使用了 OrderedDict,并分析了时间复杂度。

任务五:代码审查

需求: 找出以下代码的问题并优化。

1
2
3
4
5
def get_user_data(user_id):
conn = sqlite3.connect('db.sqlite')
cursor = conn.cursor()
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
return cursor.fetchone()

GLM5 发现的问题:

  • SQL 注入风险 ✅
  • 连接未关闭 ✅
  • 没有错误处理 ✅

DeepSeek 3.2 发现的问题:

  • SQL 注入风险 ✅
  • 连接未关闭 ✅
  • 没有错误处理 ✅
  • 使用 SELECT * 不优雅 ✅
  • 没有类型注解 ✅
  • 建议改用 ORM 或上下文管理器 ✅

最终评分

任务 GLM5 DeepSeek 3.2
Python 数据处理 4.0 4.75
React 组件 3.25 4.75
SQL 查询 3.75 4.5
算法实现 4.0 4.5
代码审查 4.0 4.75
总分 19.0/25 23.25/25

结论

GLM5 适合:

  • 快速原型开发
  • 简单的脚本任务
  • 对代码健壮性要求不高的场景

DeepSeek 3.2 适合:

  • 生产级代码开发
  • 需要完整异常处理的场景
  • 团队协作项目(代码规范性好)

一句话总结: GLM5 能写代码,DeepSeek 3.2 能写好代码。


系列文章:


你用过这两个模型吗?体验如何?欢迎留言讨论。


大模型代码实战:GLM5 vs DeepSeek 3.2
https://wanzaixiaoxin.github.io/2026/03/05/大模型代码实战:GLM5-vs-DeepSeek-3-2/
Beitragsautor
作者
Veröffentlicht am
March 5, 2026
Urheberrechtshinweis