在VB6中使用固定宽度字符串是否有任何性能上的好处?



在pre-。在asp.net Visual Basic中,程序员可以将字符串声明为一定的宽度。例如,我知道社会安全号码(在美国)总是十一个字符。因此,我可以声明一个字符串,将社会保险号存储为11个字符的字符串,如下所示:

Dim SSN As String * 11

我的问题是:这是否会产生任何类型的性能优势,要么使代码运行得更快,要么使用更少的内存?此外,固定长度字符串在内存中的分配是否会不同(,即::在堆栈上而不是在堆中)?

不,没有性能上的好处。

BUT 即使有,除非你在一个循环中调用很多次(比如百万次),任何性能上的好处都是微不足道的。

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

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

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

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

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

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

试着编写一个测试应用程序来执行两个字符串的基本连接,并让它在函数上循环50k次。计算一个长度未定义而另一个长度固定两者之间的时间差。

最新更新