Nếu ai đó có thể giúp tôi, tôi hoàn toàn không có ý tưởng.Vấn đề về hiệu suất bản đồ
Vì vậy, tôi có mã này (đó là một phiên bản rất đơn giản của mã của tôi):
while(readNewFile())
{
while(getNewStructFromFile())
{
unsigned long starttime = GetTickCount();
customerData.fillFromBinaryData(structPointer);
cout<< GetTickCount() - starttime;
aMap.insert(pair<int,string>(customerData.phoneNumber,""));
}
// Ouptut all data
aMap.clear();
}
Về cơ bản, nó chỉ đọc hồ sơ từ một tập tin nhị phân. customerData
lấy dữ liệu và điền các biến của nó với dữ liệu từ nó. Sau đó, nó chèn số điện thoại vào một bản đồ (để gỡ lỗi Tôi thực sự chỉ cần chèn một int và một chuỗi rỗng).
Vấn đề là sau một thời gian ngắn chương trình này sẽ rất chậm; nếu tôi bình luận ra bản đồ, chương trình sẽ chạy OK mà không gặp vấn đề gì với thời gian thực thi liên tục cho mỗi tập tin. Nếu tôi sử dụng chèn bản đồ, sau một vài tập tin, chương trình lại chạy rất chậm (từ 8 - 10 giây đến 1 phút hoặc hơn). Nhưng gỡ lỗi với GetTickCount()
, nó cho tôi thấy rằng sự chậm trễ xảy ra trong customerData.fillFromBinaryData
(ở 0ms đầu tiên và sau đó nhảy tới 30-40 ms (để điền vào các biến lớp)). Nhưng nếu tôi nhận xét việc chèn bản đồ đơn giản này, không có sự chậm trễ trong việc điền vào đối tượng với dữ liệu! Lý luận đó ở đâu? Ai đó có thể cho tôi một gợi ý, tôi không có ý tưởng. Xin lỗi nếu câu hỏi này không phải là một câu hỏi hay.
Tôi đã thử các loại bản đồ khác nhau, nhưng một lần nữa, nó cho tôi thấy rằng độ trễ không nằm trong bản đồ chèn.
Edit/Có thể giải pháp:
Trong trường hợp ai đó có vấn đề tương tự, tôi cài đặt VS2015, và sự chậm trễ sử dụng bản đồ đã biến mất! Tôi không chắc làm thế nào điều này có liên quan, nhưng Hurray!
Bạn đang in tất cả dữ liệu trong mỗi vòng lặp? Các dữ liệu được lớn hơn mỗi lần .... – Aleksandar
Tôi chỉ đơn giản là không thể là người duy nhất từ xa tò mò tại sao câu hỏi này được gắn thẻ 'asn.1', xem xét hoàn toàn không có đề cập đến nó bất cứ điều gì trong cơ thể câu hỏi. – WhozCraig
Tôi xuất một lần cho mỗi tệp và tôi xóa bản đồ sau này, tại sao nó lại lớn hơn? customerData chỉ là một bản ghi khách hàng, mỗi lần nó nhận được một giá trị mới. Tôi thực sự đang readding từ một tập tin asn :) Tôi không chắc chắn lý do tại sao tôi thêm thẻ ... – Silencer