matplotlib / matplotlib/ipympl
Optimizations
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Jupyter Notebook
- Estrellas
- 1.7k
- Forks
- 234
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I feel like there could be some optimizations concerning the image update.
1. We should draw binary data directly on the canvas using:
```javascript
context.putImageData(binary_data);
```
instead of creating a Blob that is png encoded. That would also allow the back-end to not waste time encoding into png (if that is possible).
2. I feel like the "diff" computation should actually be slower than sending the full image, as it needs an extra computation of "which pixels actually needs a redraw?": https://github.com/matplotlib/matplotlib/blob/5fc44eea64a57ab1c6d236cf7c71906c9d40e6f6/lib/matplotlib/backends/backend_webagg_core.py#L190-L195.
Plus, we are still sending a full image. Maybe the png encoding does some compression if lots of pixels are transparent? If that is not the case, we are still sending the same amount of data.
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.
Línea de trabajo
Comienza con el código de actualización de imágenes referenciado en matplotlib/backends/backend_webagg_core.py y rastrea el punto de entrada correspondiente para la actualización del canvas en ipympl. Compara la ruta propuesta para datos binarios con las rutas actuales de PNG y diff, y define benchmarks y criterios de aceptación antes de cambiar cualquiera de los dos lados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, python
- Área
- backend, frontend, performance
- Tipo de issue
- Refactorización
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100