VB6 - 在VB6中使用固定宽度字符串是否有任何性能优势?

问题描述 投票:8回答:2

在.NET之前的Visual Basic中,程序员可以将字符串声明为某个宽度。例如,我知道社会安全号码(在美国)总是十一个字符。所以,我可以声明一个字符串,将社会安全号码存储为11个字符的字符串,如下所示:

Dim SSN As String * 11

我的问题是:这是否会创建任何类型的性能优势,使代码运行得更快或者使用更少的内存?另外,固定长度的字符串是否会以不同的方式分配在内存中(即:在堆栈中而不是在堆中)?

string vb6
2个回答
4
投票

VB6或更早版本中我必须使用固定长度字符串的唯一一次是使用API​​调用。没有传递固定长度的字符串会在长度超过预期时导致无法解释的错误,有时甚至会比预期的短。

如果您正在进行并计划在应用程序中更改它,请确保没有将字符串传递给API或外部DLL,并且该程序不需要输出固定长度字段,例如使用许多AS / 400进口计划。

我个人从来没有看到性能差异,因为我正在运行300k +记录的循环,但别无选择,只能在我做的时候提供和使用固定长度。但是VB默认情况下喜欢使用未定义的长度,所以我认为固定长度的性能会更低。

尝试编写测试应用程序来执行两个字符串的基本连接,并让它循环遍历函数,如50k次。时间两者之间的差异有一个未定义的长度而另一个是固定的。


6
投票

不,没有性能优势。

但即使有,除非你在循环中呼叫许多(比如数百万)次,否则任何性能优势都可以忽略不计。

此外,如果您不使用整个长度(除非非常短的固定长度字符串),固定长度字符串占用的内存比可变长度字符串多。

与往常一样,在使代码难以维护之前,您应该仔细进行基准测试。

固定长度字符串通常在与某些COM API交互时,或者在对域约束进行建模时(例如您给出的SSN示例)

© www.soinside.com 2019 - 2024. All rights reserved.