HelloZeroNet / HelloZeroNet/ZeroNet
Slow start due to quadratic time algorithms
- Langage dominant
- JavaScript
- Étoiles
- 18.8k
- Forks
- 2.3k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### Step 1: Please describe your environment
* ZeroNet version: v0.7.2 (rev4555)
* Operating system: N/A
* Web browser: N/A
* Tor status: N/A
* Opened port: N/A
* Special configuration: N/A
### Step 2: Describe the problem:
ZeroNet takes about an hour to start with a few thousand sites downloaded.
The logs say:
```
[13:03:17] SiteManager Added new site: [address]
[13:03:17] Site:1A28C5..E1dw ContentDb init: 0.000s, found files: 0, sites: 8963
[13:03:17] Site:1A28C5..E1dw ContentDb not initialized, load files from filesystem...
[13:03:17] Site:1A28C5..E1dw Content.json not exist: ./data/[address]/content.json
[13:03:17] RateLimit Added to queue (2.75s left): Save sites.json
[13:03:17] SiteManager Updated merger sites in 0.601s
```
(repeat a few thousand times)
The 'Updated merger sites' seems to be the culprit. It's from `SiteManagerPlugin.updateMergerSites`, which scans all the downloaded sites, and is invoked every time a site is initialized. That takes quadratic time.
#### Steps to reproduce:
1. Create/download lots of sites
2. ???
3. PROFIT
#### Observed Results:
Quadratic time intiailization.
#### Expected Results:
Linear (ideally) time initialization.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par SiteManagerPlugin.updateMergerSites et suivez l’endroit où il est appelé pendant l’initialisation des sites. Reproduisez le démarrage avec une grande collection de sites téléchargés tout en examinant les durées répétées de « Updated merger sites ». Le travail est terminé lorsque l’initialisation ne réanalyse plus tous les sites de manière quadratique et que le temps de démarrage évolue de manière linéaire ou nettement meilleure.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript
- Domaine
- backend, performance
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100