WPS Excel RTD在某些模板下ConnectData慢的跟乌龟一样

public: STDMETHOD(ServerStart)(IRTDUpdateEvent * CallbackObject, long *ServerStart) { *ServerStart = 1; return S_OK; } STDMETHOD(ConnectData)(long TopicID, SAFEARRAY * * Strings, VARIANT_BOOL * GetNewValues, VARIANT *ConnectData) { ConnectData->vt = VT_BSTR; ConnectData->bstrVal = _bstr_t(L"finished").Detach(); return S_OK; } STDMETHOD(RefreshData)(long * TopicCount, SAFEARRAY * *RefreshData) { return S_OK; } STDMETHOD(DisconnectData)(long TopicID) { return S_OK; } STDMETHOD(Heartbeat)(long *Heartbeat) { *Heartbeat = 1; return S_OK; } STDMETHOD(ServerTerminate)() { return S_OK; } }; 这个是我的RTD服务实现,仅在连接数据时直接返回finished。但是我用特定模板打开只有20万个RTD函数的情况下,几分钟都刷新不完。正常的模板哪怕是上百万的RTD函数很快就刷新完了。同样的模板测试了Excel,Excel速度都很快,并没有发现此类问题。这应该是WPS 内部RTD实现逻辑有问题,是一个WPS的BUG
上海
浏览 213
收藏
6
分享
6 +1
7
+1
全部评论 7
 
黄帅
黄帅

金山办公

目前【RTD关系的维护】很花时间。可能我们有些数据结构设计得不合理。之后我们考察一下
· 广东省
1
回复
zzn
有些好奇你们的RTD的实现方式,我这边理解下来测试发现,RTD推送数据貌似也并没有通过ID触发固定单元格函数获取数据,只要有一个数据推送,所有的RTD函数都会重新触发一遍,你们内部应该维系了一个缓存数据的结构。之前我们做国产插件就自己实现了一把RTD的工作原理,只是有一点我没有弄明白,相同函数的所有函数删除后会触发disconnect,这个你们是如何监控的。
· 上海
回复
 
覃欢
覃欢

@金山办公

方便将在计算的时候,抓个 et.exe DUMP 压缩发送到qinhuan@wps.cn 我们分析一下
· 广东省
回复
zzn
我这里有Demo和文件,必现。我发你这个邮件
· 上海
回复