0
如何重置/清空为std :: wstring?如何重置/清空为std :: wstring?
看来,我的功能是使用这些线时作出延迟:
std::wstring currentUrl; // <--- I declare this as global.
currentUrl = _bstr_t(url->bstrVal);
任何想法,我怎么能解决这个问题?
如何重置/清空为std :: wstring?如何重置/清空为std :: wstring?
看来,我的功能是使用这些线时作出延迟:
std::wstring currentUrl; // <--- I declare this as global.
currentUrl = _bstr_t(url->bstrVal);
任何想法,我怎么能解决这个问题?
你是怎么测量这个延迟的?唯一可靠的方法是通过一个分析器,一个分析器也会告诉你这段时间是如何度过的。
也就是说,经常分配给一个字符串(除非该字符串可以重用其旧缓冲区或小字符串优化),其中包括删除旧缓冲区并分配新缓冲区。动态内存很慢。
我不知道_bstr_t
,但由于std::wstring
确实只有赋值运算符来自另一个std::wstring
和const wchar_t*
,所以我认为这是后者。如果是这种情况,字符串不知道它将被分配的字符串的大小,所以如果字符串很大,它可能不得不递增地增加它的缓冲区,这又涉及分配和释放以及复制字符,所以这个可能相当昂贵。
您可以尝试使用成员函数assign()
而不是赋值运算符。我认为有assign()
的过载需要const wchar_t*
和字符串的大小,以便它能够事先知道确切的缓冲区大小。
但是,与性能问题一样,您需要使用分析器进行测量。猜测不会让你走远。