Hôm nay tôi đã tải xuống và tạo một dự án mẫu về triển khai STL của Electronic Arts và vector của EA trông chậm hơn nhiều so với tiêu chuẩn. Tôi chỉ cần tạo 2 vectơ và tải chúng lên với 1 triệu các mặt hàng:Hiệu suất EASTL
void performance_test(void)
{
clock_t start;
clock_t end;
// EA
eastl::string strEA = "hello";
eastl::vector<eastl::string> vec_EA;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_EA.push_back(strEA);
}
end = clock();
printf("EA %f\n", (double(end - start)/1000));
// Standard
std::string strStandard = "hello";
std::vector<std::string> vec_Standard;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_Standard.push_back(strStandard);
}
end = clock();
printf("Standard %f\n", (double(end - start)/1000));
}
Và kết quả là:
- EA 0,759000
- Chuẩn 0,064000
Vì vậy, là có bất cứ điều gì những gì tôi đang làm sai hoặc tôi chỉ bỏ lỡ một cái gì đó? Mẫu đã được biên dịch với bộ công cụ nền tảng v100.
Tại sao bạn gắn thẻ C? Thư viện chuẩn của trình biên dịch có thể được tối ưu hóa đặc biệt cho trình biên dịch đó. Tôi không chắc liệu nó có phải là thứ tự độ lớn không. Bộ công cụ nền tảng v100 là gì? –
Tôi không chắc mình sẽ tin 'đồng hồ' cho thời gian, nhưng khi sự khác biệt là tuyệt vời thì nó sẽ ổn thôi. Nó sẽ là giá trị cố gắng một vector EASTL với một chuỗi tiêu chuẩn và ngược lại, để thu hẹp vấn đề. –
@MarkRansom: Hmm. Vector của EA với chuỗi chuẩn nhanh hơn vector chuẩn, nhưng chuỗi không được nhanh hơn? – CsOkemf