Skip to content

slow dmypy recheck times #6722

Open
Open
@chadrik

Description

@chadrik

Hi, I'm creating an issue for a problem discussed with @ilevkivskyi over at dropbox/mypy-PyCharm-plugin#26

Ivan indicated that he's getting 300-500ms response time from dmypy on rechecks of a large code base, but on my moderately large code base, dmypy is taking over 15s to rerun if I edit any files.

I'm using 0.701.

First I start the daemon:

$ dmypy run -v -- python/packages
err                     : 
out                     : python/packages/filesize.py:51: error: I ...
platform                :     darwin
python_version          :        2_7
roundtrip_time          :     20.145
stats                   : {
'validate_meta_time': 0.005048990249633789,
'files_parsed': 819, 
'modules_parsed': 520, 
'stubs_parsed': 299, 
'parse_time': 4.495372295379639, 
'find_module_time': 0.3217315673828125, 
'find_module_calls': 5739, 
'graph_size': 819, 
'stubs_found': 299, 
'graph_load_time': 5.5668110847473145, 
'fm_cache_size': 1936, 
'sccs_left': 0, 
'nodes_left': 0, 
'cache_commit_time': 4.0531158447265625e-06, 
'load_fg_deps_time': 9.5367431640625e-07
}
status                  :          1

Then I edit a file and recheck:

$ dmypy recheck -v --update python/packages/foo.py
err                     : 
out                     : python/packages/foo.py:1 ...
platform                :     darwin
python_version          :        2_7
roundtrip_time          :     17.837
stats                   : {
'load_fg_deps_time': 2.5272369384765625e-05, 
'validate_meta_time': 1.3113021850585938e-05, 
'files_parsed': 1, 
'modules_parsed': 1, 
'stubs_parsed': 0, 
'parse_time': 0.002131938934326172, 
'find_module_time': 0.005670785903930664, 
'find_module_calls': 4, 
'semanal_time': 0.0036809444427490234,
'typecheck_time': 0.0034759044647216797, 
'deps_time': 0.001669168472290039, 
'finish_passes_time': 0.0005908012390136719, 
'update_isolated_time': 0.021294116973876953, 
'propagate_time': 0.003412961959838867, 
'find_changes_time': 0.0008490085601806641, 
'fg_update_time': 17.824305057525635,
'files_changed': 1
}
status                  :          1

Clearly the problem lies in fg_update_time!

It may be important to note that this code produces hundreds of errors. I'm using a custom mypy runner to filter out errors I'm not concerned with until my message filtering PR gets some traction.

Here's my mypy.ini:

[mypy]
python_version = 2.7
ignore_missing_imports = true
follow_imports = skip
warn_no_return = false
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true

Any guidance is greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions