update
This commit is contained in:
27
engine/tests/fixtures/demo_sort.py
vendored
Normal file
27
engine/tests/fixtures/demo_sort.py
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
"""Demo script for users: contains several detectable anti-patterns.
|
||||
|
||||
- membership test against a list inside a loop -> membership_in_list
|
||||
- nested loops -> nested_loops
|
||||
- string concatenation with += inside a loop -> str_concat_loop
|
||||
"""
|
||||
|
||||
|
||||
def build_report(rows, allow):
|
||||
out = ""
|
||||
for r in rows:
|
||||
if r in allow: # O(n) membership test on a list
|
||||
out += str(r) + "," # string += accumulation
|
||||
for other in rows: # nested loop -> O(n^2)
|
||||
if r == other:
|
||||
pass
|
||||
return out
|
||||
|
||||
|
||||
def main():
|
||||
rows = list(range(400))
|
||||
allow = list(range(0, 400, 2))
|
||||
for _ in range(30):
|
||||
build_report(rows, allow)
|
||||
|
||||
|
||||
main()
|
||||
16
engine/tests/fixtures/nested_calls.py
vendored
Normal file
16
engine/tests/fixtures/nested_calls.py
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
def leaf():
|
||||
s = 0
|
||||
for i in range(20000):
|
||||
s += i
|
||||
return s
|
||||
|
||||
|
||||
def mid():
|
||||
return sum(leaf() for _ in range(3))
|
||||
|
||||
|
||||
def main():
|
||||
return mid()
|
||||
|
||||
|
||||
main()
|
||||
19
engine/tests/fixtures/with_imports.py
vendored
Normal file
19
engine/tests/fixtures/with_imports.py
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
"""scope=all 的测试 fixture —— 故意 import 一些标准库并实际用它们,
|
||||
让 cProfile 能归因到非用户脚本里的帧。"""
|
||||
import json
|
||||
import time
|
||||
|
||||
|
||||
def payload():
|
||||
# 强制 json.loads / json.dumps 进 cProfile 栈
|
||||
return json.loads(json.dumps({"a": 1, "b": [1, 2, 3]}))
|
||||
|
||||
|
||||
def run():
|
||||
for _ in range(50):
|
||||
payload()
|
||||
# 让 time.sleep / 调度器也进栈 —— 注意 sleep < cProfile tick 的话归不到
|
||||
# 它自己头上,但 time 模块的辅助函数会被经过
|
||||
|
||||
|
||||
run()
|
||||
Reference in New Issue
Block a user