CI
github-actions:test
12 runs
Average
23 ms
median 26 ms
max 28 ms
max 28 ms
Phases
Setup 0.60 ms
Call 22 ms
Teardown 0.16 ms
Categories
Database 21 ms
App code 0.09 ms
Other (Unsampled, Deep copies, pytest) 1 ms
16 database queries per run
Needs 5 KB of memory (max 16 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
call22 ms96.6%
AnalyticsTest.test_single_testapps/projects/tests.py:8208 ms34.5%
history_for_testapps/projects/analytics.py:806 for perf in TestPerf.objects.filter(test=test)6 ms27.6%
QuerySet.__iter__django/db/models/query.py:3906 ms27.6%
QuerySet._fetch_alldjango/db/models/query.py:20006 ms27.6%
ModelIterable.__iter__django/db/models/query.py:955 ms20.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16115 ms20.7%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms6.9%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms6.9%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms6.9%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2532 ms6.9%
Query.get_select_maskdjango/db/models/sql/query.py:8912 ms6.9%
Query._get_defer_select_maskdjango/db/models/sql/query.py:8382 ms6.9%
Query._get_defer_select_maskdjango/db/models/sql/query.py:8202 ms6.9%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:9812 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
ModelIterable.__iter__django/db/models/query.py:1272 ms6.9%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15772 ms6.9%
SQLCompiler.get_convertersdjango/db/models/sql/compiler.py:15262 ms6.9%
history_for_testapps/projects/analytics.py:819 TestRun.objects.filter(test=test)2 ms6.9%
QuerySet.__iter__django/db/models/query.py:3902 ms6.9%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms6.9%
ModelIterable.__iter__django/db/models/query.py:952 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
AnalyticsTest.test_single_testapps/projects/tests.py:8255 ms20.7%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()3 ms13.8%
QuerySet.firstdjango/db/models/query.py:11453 ms13.8%
QuerySet.__iter__django/db/models/query.py:3903 ms13.8%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms13.8%
ModelIterable.__iter__django/db/models/query.py:953 ms13.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms6.9%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms6.9%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms6.9%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms6.9%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms6.9%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms6.9%
Col.as_sqldjango/db/models/expressions.py:13252 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms6.9%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms6.9%
BaseCursor._set_resultspsycopg/_cursor_base.py:5352 ms6.9%
BaseCursor._select_current_resultpsycopg/_cursor_base.py:5142 ms6.9%
resolve_scopeapps/projects/analytics.py:206 environments=list(Environment.objects.filter(project=project, kind=env)),2 ms6.9%
QuerySet.__iter__django/db/models/query.py:3902 ms6.9%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms6.9%
ModelIterable.__iter__django/db/models/query.py:952 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
AnalyticsTest.test_single_testapps/projects/tests.py:8243 ms13.8%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()3 ms13.8%
QuerySet.firstdjango/db/models/query.py:11453 ms13.8%
QuerySet.__iter__django/db/models/query.py:3903 ms13.8%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms13.8%
ModelIterable.__iter__django/db/models/query.py:953 ms13.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms6.9%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms6.9%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms6.9%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms6.9%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3002 ms6.9%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12662 ms6.9%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12262 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()2 ms6.9%
TestCase._fixture_setupdjango/test/testcases.py:14782 ms6.9%
TestCase._enter_atomicsdjango/test/testcases.py:13962 ms6.9%
Atomic.__enter__django/db/transaction.py:2112 ms6.9%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms6.9%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms6.9%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
AnalyticsTest.test_single_testapps/projects/tests.py:814 rows = environment_stats_for_test(test)2 ms6.9%
environment_stats_for_testapps/projects/analytics.py:748 for perf in TestPerf.objects.filter(test=test, date__gte=since).select_related("environment").order_by("date"):2 ms6.9%
QuerySet.__iter__django/db/models/query.py:3902 ms6.9%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms6.9%
ModelIterable.__iter__django/db/models/query.py:952 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
AnalyticsTest.test_single_testapps/projects/tests.py:8232 ms6.9%
latest_perfapps/projects/analytics.py:846 return perfs.select_related("profile", "environment").order_by("-date").first()2 ms6.9%
QuerySet.firstdjango/db/models/query.py:11452 ms6.9%
QuerySet.__iter__django/db/models/query.py:3902 ms6.9%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms6.9%
ModelIterable.__iter__django/db/models/query.py:952 ms6.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms6.9%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms6.9%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms6.9%
CursorWrapper.executedjango/db/backends/utils.py:792 ms6.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms6.9%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms6.9%
Cursor.executepsycopg/cursor.py:1132 ms6.9%
Connection.waitpsycopg/connection.py:4952 ms6.9%
Estimated from 14 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/analytics.py:846
return perfs.select_related("profile", "environment").order_by("-date").first()
latest_perf
· Database
|
8 ms |
|
apps/projects/analytics.py:806
for perf in TestPerf.objects.filter(test=test)
history_for_test
· Database
|
6 ms |
|
apps/projects/analytics.py:748
for perf in TestPerf.objects.filter(test=test, date__gte=since).select_related("environment").order_by("date"):
environment_stats_for_test
· Database
|
2 ms |
|
apps/projects/analytics.py:819
TestRun.objects.filter(test=test)
history_for_test
· Database
|
2 ms |
|
apps/projects/analytics.py:206
environments=list(Environment.objects.filter(project=project, kind=env)),
resolve_scope
· Database
|
2 ms |
Fixtures
Exact setup time| _django_db_marker function | 0.06 ms |
| _dj_autoclear_mailbox function | 0.04 ms |
| _django_set_urlconf function | 0.03 ms |
| _template_string_if_invalid_marker function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
16 queries · 9 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
5×
SELECT "projects_testperf"."id", "projects_testperf"."project_id", "projects_testperf"."test_id", "projects_testperf"."profile_id", "projects_testperf"."part", "projects_testperf"."environment_id", "projects_testperf"."outcome", "projects_testperf"."duration", "projects_testperf"."setup", "projects…
4×
SELECT "projects_environment"."id", "projects_environment"."project_id", "projects_environment"."name", "projects_environment"."kind", "projects_environment"."provider", "projects_environment"."details", "projects_environment"."date_first_seen", "projects_environment"."date_last_seen" FROM "project…
Biggest pieces of work
|
call test body
apps/projects/tests.py:814
|
19 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
2 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
Reliability
12 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 12 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 16 hours ago | CI github-actions:test | passed | 22 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 14 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 26 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 19 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 25 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 17 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 28 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 26 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 26 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 27 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 16 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 27 ms | Profile |