2

我将 mORMot 文件夹添加到 Delphi 的库中,并通过在文件夹 SQLite3 中运行 TestSQL3 来测试它是否正常工作。它在 UTF8 处显示错误

!- UTF8:14,000 / 1,099,792 失败 1.15 秒

我该如何解决?请帮忙!!先感谢您。

概要 mORMot 框架 自动化测试


  1. 概要库

1.1。低电平常见:

  • 系统拷贝记录:162 个断言通过 108us
  • TRawUTF8List:190,172 个断言通过了 61.62 毫秒
  • TDynArray:1,092,815 个断言通过了 137.96 毫秒
  • TDynArrayHashed:1,599,067 个断言通过了 1.09 秒
  • TSynDictionary:139,850 个断言通过了 324.01 毫秒
  • TSynQueue:6,541,501 个断言通过了 215.78 毫秒
  • TObjectListHashed:2,996,100 个断言通过了 1.49 秒
  • TObjectListSorted:79,912 个断言通过了 51.59 毫秒
  • TSynNameValue:40,032 个断言通过了 5.54 毫秒
  • TRawUTF8Interning:2,000,013 个断言通过了 122.39 毫秒 500000 个在 40.91 毫秒内实习 8 KB,即 12,219,262/s,平均。0us,186.4 MB/s 500000 在 12.76ms 内直接 7.6 MB,即 39,175,742/s,平均。0us,597.7 MB/s
  • TObjectDynArrayWrapper:167,501 个断言通过了 13.25 毫秒
  • TObjArray:3,230 个断言通过了 1.72 毫秒
  • 自定义 RTL:77,552 个断言通过 1s FillChar in 30.56ms, 12.7 GB/s Move in 4.51ms, 3.4 GB/s small Move in 5.86ms, 3.7 GB/s big Move in 106.81ms, 3.6 GB/s FillCharFast [] in 33.54 ms, 11.5 GB/s MoveFast [] in 3.61ms, 4.3 GB/s small MoveFast [] in 5.76ms, 3.8 GB/s big MoveFast [] in 105.27ms, 3.7 GB/s
  • 快速字符串比较:71 个断言通过 268us
  • IdemPropName:216 个断言通过了 207us
  • 网址编码:152 个断言通过了 1.08 毫秒
  • GUID:10,007 个断言通过了 2.75 毫秒
  • ParseCommandArguments:232 个断言通过了 370us
  • IsMatch:4,250 个断言通过了 2.27 毫秒
  • TExprParserMatch:140 个断言通过了 663us
  • Soundex:35 个断言通过了 518us
  • 数值转换:2,545,159 个断言在 16.49 毫秒内通过 351.35 毫秒 100000 个 FloatToText,即 6,062,443/秒,平均。0us,109.9 MB/s 100000 str in 23.31ms 即 4,290,004/s,平均。0us,94 MB/s 100000 DoubleToShort 在 18.31ms 即 5,460,899/s,平均。0us, 99 MB/s
  • 整数:33,860 个断言通过了 48.08 毫秒
  • crc32c:290,087 个断言通过了 80.93 毫秒,286.7 MB/s 快速 2.4 GB/s sse42 4.1 GB/s
  • Random32:201,002 个断言通过了 25.81 毫秒
  • Bloom 过滤器:2,010,072 个断言通过了 128.92 毫秒
  • DeltaCompress:87 个断言通过了 6.38 毫秒
  • Curr 64:20,056 个断言通过了 1.83 毫秒
  • CamelCase:11 个断言通过了 116us
  • 位:22,985 个断言通过了 14.47 毫秒
  • Ini 文件:7,028 个断言通过了 188.97 毫秒!- UTF8:14,000 / 1,099,792 失败 1.15 秒
  • 网址解码:1,101 个断言通过 561us
  • Baudot 代码:10,007 个断言通过了 21.87 毫秒
  • ISO 8601 日期和时间:200,831 个断言通过了 16.80 毫秒
  • 时区:408 个断言通过了 212.13 毫秒
  • Mime 类型:30 个断言通过了 651us
  • 快速选择:4,015 个断言通过了 124.33 毫秒
  • TSynTable:875 个断言通过了 2.34 毫秒
  • TSynCache:404 断言通过了 404us
  • TSynFilter:1,005 个断言通过了 2.57 毫秒
  • TSynValidate:677 个断言通过了 774us
  • TSynLogFile:49 个断言通过了 977us
  • TSynUniqueIdentifier:1,300,002 个断言通过 515.62 毫秒总失败:14,000 / 22,692,553 - 低级常见失败 7.45 秒

Windows 10 64bit (10.0.18362) (cp874) 8 x Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (x86) 使用 mORMot 1.18.6102 TSQLite3LibraryStatic 3.32.3 和内部 MM 生成:Delphi 10.3 Rio 32位编译器

所有测试所用时间:2m29 由 LENOVO 在 LAPTOP-BED954TL 上于 2020-08-06 23:58:11 执行

所有测试套装的断言失败总数:14,000 / 45,919,717!一些测试失败:请更正代码。

完成 - 按 ENTER 退出

4

1 回答 1

3

回归测试有一个限制。

正如您的输出所述:

Windows 10 64bit (10.0.18362) (cp874)

您正在使用带有代码页 874的系统。

在某些测试中,一些 UTF-8 到 WinAnsi(也称为代码页 1252)是通过AnsiString类型执行的,并且您自己的代码页可能会丢失某些字符。

因此报告了一些测试失败。

由于当前测试的某些限制,这是一个误报错误。以后我会尽量避免这样的问题。

如果您可以编译TestSQL3,那么您的安装很可能是正确的,并且它将按预期使用内部 UTF-8 内容(mORMot 在内部使用 UTF-8 JSON 以避免不必要的转换)和常规 VCLstring类型,即 UTF -16,将通过UTF8ToString/StringToUTF8()函数安全地可用 。

于 2020-08-06T19:34:15.933 回答