django - 了解 Django View 的基准测试

标签 django caching benchmarking

我正在尝试测量查询我的 Django View 之一所需的时间。它基本上是使用不同的 LIMIT 子句(sqlite)进行 SELECT。以下是我获得的时间,首先直接调用 View 函数,然后使用 urllib 将其作为 GET 请求调用。

LIMIT  view(s.)  request(s.)
25     4.5       12.6
100    1.6       2.1
400    3.5       3.3
800    4.4       4.7
1600   7.6       8.4
...

为什么第一次计时如此之高?是否有一些明显的原因,例如我无法禁用的某些缓存,或者数据库访问固有的?

我没有使用cache_page,并且我尝试按照我在网上找到的一些建议全面禁用缓存:

settings.CACHE_BACKEND = 'dummy:///'
settings.CACHES = {'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache',}}

如果我不重新启动服务器并再次运行测试,则 12 秒(第一次请求调用)将按预期变为 1 秒,但 4.5 秒(第一次 View 调用)保持不变。

最佳答案

除了Django的请求缓存之外,还有数据库查询缓存、读取sqlite文件时的文件系统缓存等。但是,我不确定禁用缓存会实现什么效果。它们是现实世界请求-响应周期的一部分。

如果您想了解数据库查询的效率,只需使用 EXPLAIN 直接在数据库控制台 (./manage.py dbshel​​l) 中运行实际的 SQL 查询即可> (在 MySQLPostgresq 中,不确定 sqlite)。这为您提供了数据库操作以及每个步骤使用多少资源的详细列表。因此您可以从那里进行优化。

关于django - 了解 Django View 的基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566760/

相关文章:

django - LoginRequiredMixin 失败但用户已通过身份验证

python - django-social-auth : custom response during pipeline execution

node.js - 如何使我的 Express 服务器中的 Google Cloud CDN 缓存失效?

javascript - 通过参数清除缓存

java - 使用@Cacheable注解时加载ApplicationContext失败

PHP代码注释解析速度

java - 2.5GHz Intel i7 上每秒的增量

python - 当Django模型中设置blank=True时,如何区分需要null=True的字段?

linux - 如何运行 iostat/vmstat/top/sar 直到所有后台进程完成?

django - 创建用于域重定向的 htaccess 文件(部署在 Heroku 中的 Django 应用程序)