我有以下代碼段。對於大小爲176000的矢量,循環最多需要8分鐘才能執行。我不知道什麼是採取了這麼多時間性能調整
XEPComBSTR bstrSetWithIdsAsString; //Wrapper class for BSTR
std::vector<__int64>::const_iterator it;
for(it = vecIds.begin();
it != vecIds.end();
it++)
{
__int64 i64Id = (*it);
__int64 i64OID = XPtFunctions::GetOID(i64Id);
// set ',' between two set members
if (it != vecIds.begin())
bstrSetWithIdsAsString.Append(XEPComBSTR(L","));
wchar_t buf[20];
_i64tow_s(i64OID, buf, 20, 10);
bstrSetWithIdsAsString.Append(buf);
}
__int64 GetOID(const __int64 &i64Id)
{
__int64 numId = i64Id;
numId <<= 16;
numId >>= 16;
return numId;
}
我通常會介紹一個程序,以確定它爲什麼不執行,因爲我認爲它應該... – justin 2011-02-23 12:16:16
8分鐘在哪種情況下?你是否在編譯優化?您使用的是哪種編譯器,對於MSVC,您是否禁用了Secure STL功能? – jalf 2011-02-23 12:19:39
@jalf沒有優化設置。我正在使用VC9 – 2011-02-23 12:26:02