codebytere / codebytere/node-mac-contacts

Slow performance with lots of contacts

Đang mở
#10 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
performance
Ngôn ngữ chính
Objective-C++
Star
86
Fork
18
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện các benchmark getAllContacts đã được báo cáo trên macOS với và không có các trường liên hệ được liệt kê, đồng thời so sánh các trường hợp 16 giây và 319 ms. Truy vết phần triển khai của node-mac-contacts để xác định tại sao số lượng liên hệ tương tự lại khác biệt lớn đến vậy; được xem là hoàn tất khi nguyên nhân đã được hiểu rõ và một cải thiện hiệu năng có thể đo lường được hoặc một giới hạn rõ ràng được ghi lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
macos, node.js, objective-c
Lĩnh vực
desktop, performance
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.