这两种确定字符串是否以Delphi中的某个子字符串开头的方式的性能如何进行比较?一个比另一个明显更快/更有效吗?

  if ((testString[1] = '=') AND (testString[2] = '?')) then ...


  if (AnsiStartsStr('=?', testString)) then ...

最佳答案

好吧,第一个肯定会更快。解决硬编码的高度特定的问题几乎总是比将特定的解决方案传递给一般问题解决程序快得多。至于“明显”更快,为什么不测试呢?循环运行这两个版本一千万次,并使用TStopwatch(如果没有D2010或更高版本,则使用其他方法)来计时。

另一件事:首先肯定是更快,但它也可能是错误的。如果不能保证length(TestString)大于等于2,则这里可能有错误情况。如果TestString是一个空字符串,则将引发异常。如果不是,则取决于编译器设置,您可能会或可能不会获得异常。

10-08 15:53