Tôi đang phân tích cú pháp dữ liệu mà ban đầu tôi chèn vào kho lưu trữ dữ liệu cốt lõi.Cải thiện tốc độ cập nhật bản ghi hiện có (~ 11.000) trong Dữ liệu chính
Tại thời điểm sau, tôi phân tích cú pháp cùng một XML, mặc dù một số trong số đó là có thể đã được cập nhật. Những gì tôi làm sau đó là kiểm tra bản ghi hiện có với cùng một thẻ và nếu một thẻ đã tồn tại, tôi cập nhật bản ghi với dữ liệu.
Tuy nhiên, trong khi phân tích ban đầu của tôi (khoảng 11.000 bản ghi) mất 8 giây hoặc lâu hơn, việc cập nhật có vẻ tốn kém và mất 144 giây (đây là Simulator chạy, lâu hơn đáng kể trên thiết bị thực).
Khi lần đầu tiên ổn (tôi đang hiển thị thanh tiến trình), cột thứ hai không thể chấp nhận được và tôi muốn làm gì đó để cải thiện tốc độ (mặc dù nó xảy ra ở nền trên một sợi riêng biệt) .
Thật không may, nó không phải là vấn đề của find-or-create vì dữ liệu trong XML có thể đã thay đổi cho từng bản ghi, vì vậy, về cơ bản, mỗi bản cập nhật có thể cần.
Tôi đã lập chỉ mục các thuộc tính, tăng tốc phân tích ban đầu và cập nhật, nhưng vẫn chậm (các số ở trên có lập chỉ mục). Những gì tôi đã nhận thấy rằng việc phân tích/cập nhật dường như chậm dần. Trong khi ban đầu nhanh, nó trở nên chậm hơn và chậm hơn vì ngày càng nhiều bản ghi được xử lý.
Vì vậy, cuối cùng câu hỏi của tôi là liệu có bất kỳ đề xuất nào cho tôi về cách tôi có thể cải thiện tốc độ mà tôi đang cập nhật tập dữ liệu của mình không? Tôi đang sử dụng MagicalRecord để tìm nạp bản ghi. Đây là mã:
Record *record;
if (!isUpdate) {
record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:backgroundContext];
} else {
NSPredicate *recordPredicate = [NSPredicate predicateWithFormat:@"SELF.tag == %@", [[node attributeForName:@"tag"] stringValue]];
record = [Record findFirstWithPredicate:recordPredicate];
}
tần suất bạn gọi là lưu trên Bối cảnh? –
Tôi gọi tổng cộng 18 lần. Tôi đã chơi xung quanh với con số này và nó có vẻ là số ma thuật cho tốc độ tổng thể. – runmad
Nếu tôi đọc chính xác, lần đầu tiên bạn chèn các bản ghi này, nó chỉ mất khoảng 8 giây. Vì vậy, nó là ngây thơ để tin rằng nếu bạn xóa các thực thể hiện có sau đó chèn một cái mới với các dữ liệu cập nhật rằng nó sẽ được nhanh hơn? –