C++/CX 應用與 Windows Runtime (WinRT) 交互是主要性能瓶頸,三大開銷:
wstring ↔ wchar_t*、Platform::String^ 互轉,涉及內存拷貝。核心原則:識別邊界,盡量避免跨越;不可避免時最小化轉換與拷貝。
std::wstring/wchar_t*,WinRT 要求 Platform::String^ (不可變、引用計數)。wchar_t* 的 API,直接構造 String^,跳過 wstring 中間層。StringReference 技巧:傳遞 wchar_t* 給接受 String^ 的 API 可創建輕量外觀,但要求空終止、不修改、無長期引用。WinRT 集合 (IVector, IMap) 修改即觸發通知 (用於 XAML 綁定),遠比 STL 容器昂貴。建議:
std::vector, std::map) 處理數據。C++/CX 高性能關鍵在於邊界意識:將 WinRT 交互集中在薄適配層,核心邏輯純 C++ 實現,批量轉換替代增量轉換。