codebytere / codebytere/node-mac-contacts
Slow performance with lots of contacts
- Lenguaje dominante
- Objective-C++
- Estrellas
- 86
- Forks
- 18
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza reproduciendo los benchmarks reportados de getAllContacts en macOS con y sin los campos de contacto indicados, comparando los casos de 16 segundos y 319 ms. Sigue la implementación de node-mac-contacts para identificar por qué cantidades similares de contactos difieren tanto; se considera terminado cuando se comprende la causa y se documenta una mejora de rendimiento medible o una limitación clara.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- macos, node.js, objective-c
- Área
- desktop, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 35/100