dir*_*tly 12 c++ com optimization resources
警告:我不确定这是否可以被认为是一个正确的SO编程问题!
我在使用MS Office Suite时遇到了严重的性能损失,主要是因为我处理了数百万个COM来处理文档.部分问题是通过使用OOXML SDK而不是使用本机应用程序的API来解决的.但是,OOXML SDK本身会进行COM调用,这会减慢速度(是的,我已经适当地运行了Visual Studio的内置性能分析器和BoundsChecker,并确保算法是我们可以在整个过程中使用的最佳算法).我认为一层缓存可以加快速度(有时会将执行时间减少四分之一)(但显然,加速速度因我的访问模式而异,而访问模式又取决于文档的内容结构).
鉴于COM和C++已经存在了这么长时间,我很惊讶地看到在优化基于C++的COM应用程序上的材料很少.(快速搜索谷歌应该足以证明我的观点,但我不介意被证明是错误的!)
编辑:澄清:我不是真的在寻找替代方案(因为改变基础知识为时已晚).我有兴趣阅读过去人们可能面临的类似问题,以及他们如何解决这些限制.
COM 在设计上是独立于语言/平台的。
所以寻找C++特定的优化方法有点断章取义。对于COM平台和COM服务器来说,C++客户端只是客户端之一,仅在更优化的机器代码中运行。
COM 是服务器-客户端交互/通信的协议/体系结构。
因此最小化服务器访问本身将比优化服务器访问操作更重要。
另一方面,一些 COM 服务器提供仅供 C/C++ 客户端使用的低级接口。我认为 IE WebBrowser 控件是最好的例子。对于这些 COM 服务器,使用 C++ 可以带来很大的性能改进。但据我所知 MS Office 套件不提供如此低级的接口。
也就是说,无论您是用 C++、C# 还是 VB6 构建 MS Office 套件访问模块,COM 特定处理成本(调用 COM 服务器接口方法和接收结果)很可能都是相同的。
我认为,C++客户端在与COM无关的区域有更多的优化选项,这应该是优化方法的关键点(例如像您已经做的那样引入本地缓存备份)。
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |