Evaluating expression of large objects from the debug console is extremely slow
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python, typescript, vscode
- Área
- developer-experience, devtools
Línea de trabajo
Empieza con la reproducción en test.py y la evaluación de len(d) en la consola de depuración; después, sigue la ruta de resolución de valores del depurador que emite la advertencia sobre repr lento. Compara la evaluación de len(d) con la inspección directa del objeto e identifica dónde se calcula innecesariamente la representación. Se considera terminado cuando la evaluación de la longitud de objetos grandes ya no incurre en el retraso de repr y el comportamiento está cubierto por una prueba de regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I'm seeing an issue that apparently hasn't been reported yet. I have a fairly large dictionary in memory and when I want to get its length from the debug console it takes tens of seconds. Obviously, getting the repr of the dict takes that much time but I only want to get its length.
Code to reproduce:
from unittest import TestCase
from collections import defaultdict
import numpy as np
from types import SimpleNamespace
class MyTest(TestCase):
def test_large_defaultdict(self):
d = defaultdict(lambda: defaultdict(list))
for k in 'abcdef':
for l in 'ghijk':
for i in range(10000):
d[k][l].append(SimpleNamespace(
key = k,
cycle = np.arange(20),
value = np.zeros(20)
))
pass
Set breakpoint on pass and try to evaluate len(d) from the debug console after the breakpoint is hit. This warning is printed in the console:
pydevd warning: Computing repr of d (defaultdict) was slow (took 42.36s)
Customize report timeout by setting the `PYDEVD_WARN_SLOW_RESOLVE_TIMEOUT` environment variable to a higher timeout (default is: 0.5s)
Yes, it is slow but why is repr called to print the number of items?
- Lenguaje dominante
- TypeScript
- Estrellas
- 181
- Forks
- 126
- Merge medio
- 8 h 49 min
- PR fusionados (30 d)
- 1
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/vscode-python-debugger
-
triage-needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/vscode-python-debugger#1110 ·
-
triage-needed
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
microsoft/vscode-python-debugger#1024 · 1 comentario ·
-
triage-needed
microsoft/vscode-python-debugger#1111 · 1 reacción · 1 asignado ·
-
triage-needed
microsoft/vscode-python-debugger#1104 · 1 reacción · 1 asignado ·
-
triage-needed
Dificultad 4/5 3-5 días Aptitud para principiantes 58/100
microsoft/vscode-python-debugger#1095 · 1 comentario · 1 reacción ·
Todos los issues de microsoft/vscode-python-debugger
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
bcgov/bc-wallet-mobile#4761 · 1 comentario ·
-
external-issue to-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
area-deployment area-integrations triage:bot-seen
Dificultad 2/5 Medio día Aptitud para principiantes 86/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
refactor
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100