codebytere / codebytere/node-mac-contacts

Slow performance with lots of contacts

Abierto
#10 0 comentarios 0 reacciones 0 asignados Ver en GitHub
performance
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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.