codebytere / codebytere/node-mac-contacts

Slow performance with lots of contacts

Ouverte
#10 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
performance
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.