codebytere / codebytere/node-mac-contacts

Slow performance with lots of contacts

Aperta
#10 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
performance
Lingua principale
Objective-C++
Stelle
86
Fork
18
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia riproducendo i benchmark segnalati di getAllContacts su macOS con e senza i campi di contatto elencati, confrontando i casi da 16 secondi e da 319 ms. Analizza l’implementazione di node-mac-contacts per identificare perché conteggi di contatti simili differiscano così tanto; il lavoro è completato quando la causa è compresa e viene documentato un miglioramento misurabile delle prestazioni o una limitazione chiara.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
macos, node.js, objective-c
Ambito
desktop, performance
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.