codebytere / codebytere/node-mac-contacts
Slow performance with lots of contacts
- Langage dominant
- Objective-C++
- Étoiles
- 86
- Forks
- 18
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Since my app was being very slow on their computer (MBP 16" 2019), I got a friend to run this:
```js
const nmc = require('node-mac-contacts')
console.time('done')
const c = nmc.getAllContacts(['contactImage', 'contactThumbnailImage', 'jobTitle', 'departmentName', 'organizationName', 'middleName', 'note', 'socialProfiles'])
console.log(c.length, 'contacts')
console.timeEnd('done')
```
It took 16s for ~4k contacts.
> 3705 contacts
> done: 16798.31201171875ms
Thought it might be the image buffers so asked them to run:
```js
console.time('done')
console.log(require('node-mac-contacts').getAllContacts().length, 'contacts')
console.timeEnd('done')
```
It still took 12s.
Any ideas on how to make it faster or debug this? I created 4k contacts with a first and last name on my Mac but it didn't slow it up much:
> 4135 contacts
> done: 319.488037109375ms
I'll use a worker and cache the results as a workaround. I'm curious why it takes so long.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par reproduire les benchmarks signalés de getAllContacts sur macOS avec et sans les champs de contact listés, en comparant les cas de 16 secondes et de 319 ms. Suivez l’implémentation de node-mac-contacts pour identifier pourquoi des nombres de contacts similaires diffèrent autant ; le travail est considéré comme terminé lorsque la cause est comprise et qu’une amélioration mesurable des performances ou une limitation claire est documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- macos, node.js, objective-c
- Domaine
- desktop, performance
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100