gpt4 book ai didi

excel - 为什么字典类的 Typename 函数这么慢?

转载 作者:行者123 更新时间:2023-12-04 20:22:13 25 4
gpt4 key购买 nike

我的 VBA 精英伙伴们,
在我目前的项目中,我偶然发现了一个字典问题。我正在使用 vba JSON Parser by Tim Hall使用 dictionaries翻译成json。
在深入研究具有较大第一个嵌套的嵌套字典的性能问题时,我发现了 TypeName 调用中的瓶颈:

    If VBA.TypeName(JsonValue) = "Dictionary" Then ...

我用不同的类型测试了类型名,似乎没有一个像字典一样慢。
例如,1000 个 typename(dictionary) 调用大约需要 400 毫秒,而 typename(string) 调用需要 2(!) 毫秒。
我还测试了其他对象,例如 Word 文档、集合和其他 dll 库对象,例如 RegExp对象,大约 2 毫秒。
有任何想法吗?谢谢 <3

PS:我编写了自己的小 isDictionary 方法,用于检查“dictionary.CompareMethod”是否可调用,有趣的是,使用此方法时,测试的第一圈现在是 400 毫秒,而其他 4 圈是 2 毫秒,现在瓶颈是字典的项目由“字典(键)”语法调用。
它几乎和我使用 TypeName 函数一样慢,但只是在第一圈:D

最佳答案

我无法回答为什么,但作为替代方案,并且只有在您早期绑定(bind)到脚本时,使用 TypeOf 会更快。而不是 TypeName例如

Function IsDictionary(o As Variant) As Boolean
On Error Resume Next
IsDictionary = (TypeOf o Is Dictionary)
End Function
错误处理程序是为了确保 IsDictionary返回 FALSE如果它传递了一个非对象类型

关于excel - 为什么字典类的 Typename 函数这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69950719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com