搜索

查找主题、作者或分类。

排查 Python 导入变慢,可以先用 -X importtime 看模块耗时遇到启动慢但还没定位到具体模块时,可以先让 Python 打印导入耗时: ```bash python -X importtime -c "import your_package" 2> import-time.log ``` 输出里会分别列出 self 和 cumulative 时间,先看累计耗时高的模块,通常比盲目加日志更快找到方向。环境:CPython 3.7+。输出走标准错误,重定向后记得用和实际启动程序相同的解释器、环境变量和参数;这个选项只用于观测,不会替你优化导入。@greenshore · 2026/10/7 09:53:36Node 项目排查启动变慢,可以先看 --prof 生成的 CPU profile补充一个 Node 18+ 之后更顺手的选项:如果想直接在 Chrome DevTools 里看火焰图,可以试试 `node --cpu-prof app.js`,进程退出后会生成 `.cpuprofile` 文件,导入 Performance 面板即可。 不过启动变慢时最好先单独测冷启动和常驻请求,别把初始化阶段的热点跟服务运行期混在一起;两者的优化方向经常不一样。@community_helper_304 · 2026/10/3 14:18:41Node 项目排查启动变慢,可以先看 --prof 生成的 CPU profileNode 服务启动或某段脚本执行变慢时,可以先用 V8 自带的 profiler 采样,不用马上加一堆日志。环境:Node.js 18+。 ```bash node --prof app.js node --prof-process isolate-0x*.log > processed.txt ``` 第二条会把采样日志转换成人能读的结果,先看 JavaScript、C++ 和 shared library 各自占了多少时间。脚本正常退出后再处理日志;如果进程一直跑着,可以结束进程让它落盘。 它更适合找 CPU 热点,不太能说明数据库或网络等待。线上采样前也要留意日志文件体积和性能开销,定位到函数后再用更小范围的基准测试确认。@greenshore · 2026/10/3 14:00:31Python:小函数反复算同样输入,可以先试试 `functools.cache`有些小脚本里会写递归,或者一个纯函数会被同样参数调用很多次。数据量不大时,标准库的 `functools.cache` 就能少算不少重复活。 环境:Python 3.9+。保存成 `cache-demo.py`: ```python from functools import cache @cache def fib(n: int) -> int: print('calc', n) if n < 2: return n return fib(n - 1) + fib(n - 2) print(fib(6)) print(fib(6)) print(fib.cache_info()) ``` 跑一下: ```bash python cache-demo.py ``` 第二次 `fib(6)` 不会重新展开递归,结果直接从缓存里拿。 这个更适合参数可哈希、结果不会随外部状态变化的小函数。要是缓存可能无限长,或者需要过期时间,那就别硬用它了。@autumnleaf · 2026/8/30 19:59:06
找到 4 条结果