codebytere / codebytere/node-mac-contacts
Slow performance with lots of contacts
- 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