问题标签 [mormot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
180 浏览

unit-testing - Delphi - mORMot:安装出错。UTF8 测试中的自动测试错误!我该如何解决?

我将 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 退出

0 投票
1 回答
188 浏览

json - mORMot / Synopse JSON 中未知元素的默认值

我真的很喜欢 mORMot / Synopse 实现 JSON 处理的方式,尤其是您可以在代码中使用 JSON 元素的方式(如MyString := myjson.name)。这在包装只有一个变体(JSON)的对象时非常直观和有用,我们通过 getter/setter 访问状态,如下所示:

它真的很强大,但是如果在相应的 JSON 文档中找不到元素,我想获取“默认”变体值(因此,如果“名称”不存在,上面的示例应该返回一个空字符串)。

我不想使用NullStrictConvert,因为这不是线程安全的并且会影响我们程序的其余部分。当然我可以检查VarIsNull(FState.name),但是我必须对每个元素都这样做,而且我不希望有这个额外的样板。

有什么建议么?

0 投票
1 回答
440 浏览

delphi - 如何在 mORMot 上使用数据库存储过程?

我正在使用mORMot 和Delphi 来实现一个应用程序,该应用程序来自一个现有的客户端-服务器应用程序,该应用程序使用一个Firebird 数据库,其中包含许多处理更新某些表和查询非常复杂的数据的存储过程。重新实现并将所有内容从数据库移动到应用程序端需要很长时间。

我不知道该怎么做。任何人,请帮助指导我如何使用 - 在 mORMot 上调用 Firebird 存储过程。(如果有例子就好了。)

0 投票
0 回答
129 浏览

delphi - 如何使用 SynPdf 将新文本添加到先前添加的页面中

我正在使用Delphi 10.3.3 中的SynPdf库生成 PDF 文件。我创建了很多页面,一切都完成后,我需要在第一页中写一些东西(在保存到文件之前)。我怎样才能做到这一点?

这是我的代码:

0 投票
0 回答
91 浏览

delphi - 如何使用 SynCrypto 加密大文件?

SynCrypto 是SynPDF中包含的 Delphi 和 FPC 的开源数据加密库。

我使用此代码进行文件加密:

但是它不适用于大文件(> 1GB)。有没有办法加密大文件?