Skip to content

Instantly share code, notes, and snippets.

@synopse
Created April 23, 2020 10:08
Show Gist options
  • Save synopse/cead42e18fd38d4ab014b9755582069c to your computer and use it in GitHub Desktop.
Save synopse/cead42e18fd38d4ab014b9755582069c to your computer and use it in GitHub Desktop.
mORMot 1.18.5960 on FPC 3.2 with HeapTRC
Synopse mORMot Framework Automated tests
------------------------------------------
1. Synopse libraries
1.1. Low level common:
- System copy record: 162 assertions passed 28us
- TRawUTF8List: 190,172 assertions passed 290.02ms
- TDynArray: 1,092,814 assertions passed 448.42ms
- TDynArrayHashed: 1,599,067 assertions passed 1.98s
- TSynDictionary: 139,850 assertions passed 447.51ms
- TSynQueue: 6,541,501 assertions passed 416.50ms
- TObjectListHashed: 2,996,100 assertions passed 2.21s
- TObjectListSorted: 79,922 assertions passed 152.66ms
- TSynNameValue: 40,032 assertions passed 115.51ms
- TRawUTF8Interning: 2,000,013 assertions passed 1.51s
500000 interning 8 KB in 695.08ms i.e. 719,338/s, aver. 1us, 10.9 MB/s
500000 direct 7.6 MB in 377.73ms i.e. 1,323,693/s, aver. 0us, 20.1 MB/s
- TObjectDynArrayWrapper: 167,501 assertions passed 175.43ms
- TObjArray: 3,230 assertions passed 5.24ms
- Custom RTL: 116,328 assertions passed 551.51ms
FillChar in 24.07ms, 16.1 GB/s
Move in 1.90ms, 8.1 GB/s
small Move in 8.62ms, 2.5 GB/s
big Move in 54.60ms, 7.1 GB/s
FillCharFast [] in 14.13ms, 27.4 GB/s
MoveFast [] in 1.85ms, 8.4 GB/s
small MoveFast [] in 6.48ms, 3.3 GB/s
big MoveFast [] in 39.87ms, 9.7 GB/s
FillCharFast [cpuAVX] in 11.80ms, 32.9 GB/s
MoveFast [cpuAVX] in 1.63ms, 9.5 GB/s
small MoveFast [cpuAVX] in 6.51ms, 3.3 GB/s
big MoveFast [cpuAVX] in 40.30ms, 9.6 GB/s
- Fast string compare: 71 assertions passed 13us
- IdemPropName: 216 assertions passed 274us
- Url encoding: 152 assertions passed 1.31ms
- GUID: 10,005 assertions passed 54.68ms
- ParseCommandArguments: 232 assertions passed 97us
- IsMatch: 4,250 assertions passed 245us
- TExprParserMatch: 140 assertions passed 266us
- Soundex: 35 assertions passed 16us
- Numerical conversions: 2,536,504 assertions passed 3.06s
100000 FloatToText in 212.45ms i.e. 470,683/s, aver. 2us, 8.5 MB/s
100000 str in 41.46ms i.e. 2,411,439/s, aver. 0us, 55.1 MB/s
100000 DoubleToShort in 13.73ms i.e. 7,282,790/s, aver. 0us, 145.9 MB/s
100000 DoubleToAscii in 13.31ms i.e. 7,509,198/s, aver. 0us, 151.9 MB/s
- Integers: 33,860 assertions passed 49.41ms
- crc32c: 300,098 assertions passed 108.33ms
pas 266.8 MB/s fast 1.2 GB/s sse42 5.1 GB/s sse42+aesni 6.7 GB/s
- Random32: 201,002 assertions passed 36.07ms
- Bloom filters: 2,010,072 assertions passed 356.49ms
- DeltaCompress: 87 assertions passed 14.83ms
- Curr 64: 20,056 assertions passed 8.18ms
- CamelCase: 11 assertions passed 42us
- Bits: 32,657 assertions passed 40.14ms
- Ini files: 7,028 assertions passed 51.44ms
- UTF8: 1,067,793 assertions passed 1.23s
- Url decoding: 1,101 assertions passed 850us
- Baudot code: 10,007 assertions passed 69.38ms
- Iso 8601 date and time: 196,831 assertions passed 79.83ms
- Time zones: 400 assertions passed 200.69ms
- Mime types: 30 assertions passed 391us
- Quick select: 4,015 assertions passed 158.08ms
- TSynTable: 875 assertions passed 15.71ms
- TSynCache: 404 assertions passed 359us
- TSynFilter: 804 assertions passed 6.24ms
- TSynValidate: 677 assertions passed 2.88ms
- TSynLogFile: 43 assertions passed 776us
- TSynUniqueIdentifier: 1,300,002 assertions passed 2.66s
Total failed: 0 / 22,706,150 - Low level common PASSED 16.54s
1.2. Low level types:
- RTTI: 1,340 assertions passed 2.69ms
- Url encoding: 200 assertions passed 1.75ms
- Encode decode JSON: 428,547 assertions passed 823ms
- Wiki markdown to html: 56 assertions passed 313us
- Variants: 88 assertions passed 104us
- Mustache renderer: 153 assertions passed 5ms
- TDocVariant: 91,785 assertions passed 178.71ms
- TDecimal128: 17,446 assertions passed 14.82ms
- BSON: 245,068 assertions passed 9.45ms
100000 TBSONObjectID.ComputeNew in 6.43ms i.e. 15,552,099/s, aver. 0us
- TSynTableStatement: 221 assertions passed 510us
- TSynMonitorUsage: 1,202 assertions passed 591us
Total failed: 0 / 786,106 - Low level types PASSED 1.03s
1.3. Cryptographic routines:
- Adler32: 1 assertion passed 21us
- MD5: 167 assertions passed 265us
- SHA1: 17 assertions passed 6.87ms
- SHA256: 40 assertions passed 42.99ms
using SSE4 instruction set
- SHA512: 27 assertions passed 28.38ms
- SHA3: 8,225 assertions passed 63.47ms
- AES256: 18,100 assertions passed 385.74ms
cypher 1..450 bytes with AES-NI: 1ms, without: 2.05ms
- RC4: 1,011 assertions passed 4.71ms
- Base64: 13,992 assertions passed 448.10ms
- CompressShaAes: 1,683 assertions passed 9.68ms
- TAESPNRG: 31,309 assertions passed 79.93ms
- CryptDataForCurrentUser: 5,000 assertions passed 15.91ms
2000 AES-CFB in 15.62ms i.e. 128,008/s, aver. 7us, 66.7 MB/s
- JWT: 162,739 assertions passed 356.65ms
1000 HS256 in 7.02ms i.e. 142,389/s, aver. 7us
1000 HS384 in 7.05ms i.e. 141,683/s, aver. 7us
1000 HS512 in 7.21ms i.e. 138,561/s, aver. 7us
1000 S3224 in 6.84ms i.e. 146,006/s, aver. 6us
1000 S3256 in 7.18ms i.e. 139,198/s, aver. 7us
1000 S3384 in 7.28ms i.e. 137,211/s, aver. 7us
1000 S3512 in 6.95ms i.e. 143,802/s, aver. 6us
1000 S3S128 in 6.86ms i.e. 145,708/s, aver. 6us
1000 S3S256 in 6.90ms i.e. 144,906/s, aver. 6us
100 ES256 in 105.60ms i.e. 946/s, aver. 1.05ms
- Benchmark: 62,500 assertions passed 535.47ms
2500 crc32c in 371us i.e. 6738544/s or 14 GB/s
2500 xxhash32 in 1.28ms i.e. 1947040/s or 4 GB/s
2500 hash32 in 688us i.e. 3633720/s or 7.5 GB/s
2500 md5 in 12.61ms i.e. 198192/s or 421.8 MB/s
2500 sha1 in 21.35ms i.e. 117074/s or 249.1 MB/s
2500 hmacsha1 in 23.40ms i.e. 106796/s or 227.2 MB/s
2500 sha256 in 26.19ms i.e. 95441/s or 203.1 MB/s
2500 hmacsha256 in 28.62ms i.e. 87348/s or 185.9 MB/s
2500 sha384 in 17.81ms i.e. 140339/s or 298.6 MB/s
2500 hmacsha384 in 21.12ms i.e. 118371/s or 251.9 MB/s
2500 sha512 in 17.58ms i.e. 142142/s or 302.5 MB/s
2500 hmacsha512 in 20.87ms i.e. 119737/s or 254.8 MB/s
2500 sha3_256 in 39.46ms i.e. 63353/s or 134.8 MB/s
2500 sha3_512 in 72.62ms i.e. 34425/s or 73.2 MB/s
2500 rc4 in 21.37ms i.e. 116970/s or 248.9 MB/s
2500 aes128cfb in 14.60ms i.e. 171162/s or 364.2 MB/s
2500 aes128ofb in 10.96ms i.e. 227998/s or 485.2 MB/s
2500 aes128cfbcrc in 20.20ms i.e. 123743/s or 263.3 MB/s
2500 aes128ofbcrc in 16.99ms i.e. 147067/s or 312.9 MB/s
2500 aes256cfb in 17.25ms i.e. 144885/s or 308.3 MB/s
2500 aes256ofb in 13.51ms i.e. 185007/s or 393.7 MB/s
2500 aes256cfbcrc in 22.74ms i.e. 109938/s or 233.9 MB/s
2500 aes256ofbcrc in 19.13ms i.e. 130657/s or 278 MB/s
2500 shake128 in 33.65ms i.e. 74285/s or 158 MB/s
2500 shake256 in 39.42ms i.e. 63411/s or 134.9 MB/s
Total failed: 0 / 304,811 - Cryptographic routines PASSED 1.97s
1.4. ECC cryptography:
- Reference vectors: 23 assertions passed 12.82ms
- ecc_make_key: 200 assertions passed 170.35ms
- ecdsa_sign: 200 assertions passed 179.36ms
- ecdsa_verify: 200 assertions passed 217.53ms
- ecdh_shared_secret: 597 assertions passed 360.20ms
- Certificates and signatures: 91 assertions passed 42.49ms
- ECC command line tool: 469 assertions passed 257.81ms
- ECDHE stream protocol: 521,295 assertions passed 1.12s
Total failed: 0 / 523,075 - ECC cryptography PASSED 2.36s
1.5. Compression:
- In memory compression: 12 assertions passed 1.34s
- GZIP format: 29 assertions passed 4.69s
- ZIP format: 66 assertions passed 8.15s
- SynLZO: 3,006 assertions passed 409.34ms
- SynLZ: 23,430 assertions passed 364.90ms
- TAlgoCompress: 914 assertions passed 68.59ms
TAlgoSynLZ 167.5 KB->77.2 KB: comp 141:65MB/s decomp 129:281MB/s
TAlgoLizard 167.6 KB->64.2 KB: comp 13:5MB/s decomp 202:528MB/s
TAlgoLizardFast 167.5 KB->84.6 KB: comp 200:101MB/s decomp 271:536MB/s
TAlgoLizardHuffman 167.7 KB->79.9 KB: comp 80:38MB/s decomp 212:446MB/s
TAlgoDeflate 167.7 KB->37.1 KB: comp 10:2MB/s decomp 20:91MB/s
TAlgoDeflateFast 167.6 KB->45.2 KB: comp 20:5MB/s decomp 24:92MB/s
Total failed: 0 / 27,457 - Compression PASSED 15.05s
1.6. Protocols:
- RTSP over HTTP: 1,900 assertions passed 254.11ms
Total failed: 0 / 1,900 - Protocols PASSED 254.13ms
2. mORMot
2.1. File based:
- Database direct access: 22,278 assertions passed 106.79ms
- Virtual table direct access: 12 assertions passed 783us
- TSQLTableJSON: 144,083 assertions passed 191.34ms
- TSQLRestClientDB: 310,073 assertions passed 2.48s
- TRecordVersion: 20,060 assertions passed 250.02ms
Total failed: 0 / 496,506 - File based PASSED 3.03s
2.2. File based memory map:
- Database direct access: 22,258 assertions passed 88.11ms
- Virtual table direct access: 12 assertions passed 681us
- TSQLTableJSON: 144,083 assertions passed 190.67ms
- TSQLRestClientDB: 310,071 assertions passed 2.46s
- TRecordVersion: 20,060 assertions passed 253.31ms
Total failed: 0 / 496,484 - File based memory map PASSED 2.99s
2.3. File based WAL:
- Database direct access: 22,278 assertions passed 99.01ms
- Virtual table direct access: 12 assertions passed 649us
- TSQLTableJSON: 144,083 assertions passed 187.91ms
- TSQLRestClientDB: 310,073 assertions passed 2.47s
- TRecordVersion: 20,060 assertions passed 249.76ms
Total failed: 0 / 496,506 - File based WAL PASSED 3.01s
2.4. Memory based:
- Database direct access: 22,258 assertions passed 81.03ms
- Virtual table direct access: 12 assertions passed 569us
- TSQLTableJSON: 144,083 assertions passed 187.36ms
- TSQLRestClientDB: 402,407 assertions passed 5.22s
- TRecordVersion: 20,060 assertions passed 250.32ms
- TSQLTableWritable: 24,056 assertions passed 4.76ms
- RTree: 280,024 assertions passed 4.88s
10000 With RTree in 2.38s i.e. 4,189/s, aver. 238us
10000 With RTreeInteger in 2.46s i.e. 4,061/s, aver. 246us
- Shard write: 10,602 assertions passed 707.89ms
- Shard read: 140,001 assertions passed 1.07s
- Shard read after purge: 114,003 assertions passed 831.78ms
- MaxShardCount: 144,002 assertions passed 899.41ms
Total failed: 0 / 1,301,508 - Memory based PASSED 14.14s
2.5. Basic classes:
- TSQLRecord: 87 assertions passed 2.41ms
- TSQLRecordSigned: 200 assertions passed 7.06ms
- TSQLModel: 16 assertions passed 321us
- TSQLRestServerFullMemory: 1,130,728 assertions passed 4.95s
Total failed: 0 / 1,131,031 - Basic classes PASSED 4.96s
2.6. Client server access:
- TSQLHttpServer: 2 assertions passed 3.22ms
using Synopse Sockets.514
- TSQLHttpClient: 4 assertions passed 12.13ms
using TSQLHttpClientWinSock
- HTTP client keep alive: 4,087 assertions passed 214.70ms
4.7 KB, first 2.07ms, done 201.26ms i.e. 4968/s, aver. 201us, 23.2 MB/s
- HTTP client multi connect: 4,087 assertions passed 286.28ms
4.7 KB, first 454us, done 271.02ms i.e. 3689/s, aver. 271us, 17.2 MB/s
- HTTP client encrypted: 4,087 assertions passed 305.21ms
4.7 KB, first 642us, done 291.76ms i.e. 3427/s, aver. 291us, 16 MB/s
- HTTP client custom encryption aes sha: 4,087 assertions passed 294.42ms
4.7 KB, first 267us, done 281.17ms i.e. 3556/s, aver. 281us, 16.6 MB/s
- HTTP client custom encryption aes: 4,087 assertions passed 302.77ms
4.7 KB, first 286us, done 290.46ms i.e. 3442/s, aver. 290us, 16 MB/s
- HTTP client custom encryption sha: 4,087 assertions passed 316.92ms
4.7 KB, first 256us, done 303.26ms i.e. 3297/s, aver. 303us, 15.4 MB/s
- Direct in process access: 4,056 assertions passed 40.53ms
4.7 KB, first 38us, done 31.65ms i.e. 31593/s, aver. 31us, 147.7 MB/s
- HTTP several DB servers: 12,604 assertions passed 761.82ms
4.7 KB, first 426us, done 201.73ms i.e. 4957/s, aver. 201us, 23.1 MB/s
4.7 KB, first 467us, done 202.48ms i.e. 4938/s, aver. 202us, 23 MB/s
4.7 KB, first 482us, done 204.07ms i.e. 4900/s, aver. 204us, 22.9 MB/s
Total failed: 0 / 41,188 - Client server access PASSED 2.53s
2.7. Service oriented architecture:
- Weak interfaces: 56 assertions passed 90us
- Service initialization: 268 assertions passed 9.55ms
- Direct call: 596,049 assertions passed 135.51ms
- Server side: 596,069 assertions passed 143.39ms
- Client side REST: 794,759 assertions passed 3.60s
- Client side REST as JSON object: 794,753 assertions passed 3.71s
- Client side REST sessions stats: 794,753 assertions passed 3.74s
- Client side REST locked: 794,757 assertions passed 3.59s
- Client side REST main thread: 794,757 assertions passed 6.05s
- Client side REST background thread: 794,757 assertions passed 5.16s
- Client side REST sign with crc 32c: 794,753 assertions passed 3.50s
- Client side REST sign with xxhash: 794,753 assertions passed 3.52s
- Client side REST sign with md 5: 794,753 assertions passed 3.53s
- Client side REST sign with sha 256: 794,753 assertions passed 3.57s
- Client side REST sign with sha 512: 794,753 assertions passed 3.59s
- Client side REST weak authentication: 794,753 assertions passed 3.14s
- Client side REST basic authentication: 794,753 assertions passed 4.72s
- Client side REST custom record layout: 794,753 assertions passed 3.76s
- Client side REST service log to DB: 794,753 assertions passed 4.66s
- Client side JSONRPC: 794,753 assertions passed 3.95s
- Test over HTTP: 10,482 assertions passed 541.10ms
- Security: 139 assertions passed 5.24ms
- Mocks and stubs: 30,030 assertions passed 274.78ms
Total failed: 0 / 13,949,159 - Service oriented architecture PASSED 1m04
2.8. Bidirectional remote connection:
- Websockets JSON protocol: 60 assertions passed 166us
- Websockets binary protocol: 60 assertions passed 166us
- Websockets binary protocol encrypted: 60 assertions passed 208us
- Websockets binary protocol compressed: 60 assertions passed 159us
- Websockets binary protocol compress encrypted: 60 assertions passed 211us
- Run http server: 2 assertions passed 2.05ms
- SOA callback on server side: 4,580 assertions passed 11.41ms
- SOA callback via JSON websockets: 6,898 assertions passed 490.72ms
- SOA callback via binary websockets: 6,898 assertions passed 564.06ms
- Relay start: 4 assertions passed 4.71ms
- Relay SOA callback via JSON websockets: 6,899 assertions passed 883.02ms
- Relay connection recreate: 1 assertion passed 3.51ms
- Relay SOA callback via binary websockets: 6,899 assertions passed 1.06s
- Relay shutdown: 2 assertions passed 114.85ms
- TRecordVersion: 20,068 assertions passed 293.86ms
Total failed: 0 / 52,551 - Bidirectional remote connection PASSED 3.44s
2.9. External database:
- TQuery: 2,003 assertions passed 5.59ms
- SynDBRemote: 35,589 assertions passed 283.01ms
- DB properties persistence: 7 assertions passed 166us
- External records: 2 assertions passed 960us
- Auto adapt SQL: 966 assertions passed 16ms
- Crypted database: 253,277 assertions passed 533.39ms
- External via REST: 170,355 assertions passed 3.67s
- External via virtual table: 170,355 assertions passed 4.52s
- External via REST with change tracking: 180,455 assertions passed 5.04s
Total failed: 0 / 813,009 - External database PASSED 14.09s
2.10. Multi thread process:
- Create thread pool: 1 assertion passed 1.66ms
- TSQLRestServerDB: 4,822 assertions passed 1.05s
1=14459/s 2=10084/s 5=7538/s 10=3929/s 30=1297/s 50=783/s
- TSQLRestClientDB: 4,822 assertions passed 1.05s
1=8309/s 2=14633/s 5=7860/s 10=3921/s 30=1308/s 50=785/s
- Socket API: 4,822 assertions passed 1.19s
1=3283/s 2=6164/s 5=6312/s 10=3876/s 30=1311/s 50=786/s
- Websockets: 4,822 assertions passed 1.37s
1=3160/s 2=4320/s 5=4771/s 10=3504/s 30=1266/s 50=774/s
- libcurl: 4,822 assertions passed 1.32s
1=1994/s 2=4000/s 5=4906/s 10=3749/s 30=1309/s 50=786/s
- Locked: 4,822 assertions passed 1.05s
1=8914/s 2=14610/s 5=7861/s 10=3924/s 30=1306/s 50=785/s
- Unlocked: 4,822 assertions passed 1.05s
1=8125/s 2=14650/s 5=7843/s 10=3932/s 30=1308/s 50=785/s
- Main thread: 4,822 assertions passed 1.27s
1=5171/s 2=8562/s 5=4455/s 10=2704/s 30=1144/s 50=722/s
- Background thread: 4,822 assertions passed 1.06s
1=7813/s 2=13458/s 5=7878/s 10=3925/s 30=1310/s 50=786/s
Total failed: 0 / 43,399 - Multi thread process PASSED 11.66s
2.11. DDD shared units:
- User model: 4,527 assertions passed 4.62ms
- Authentication model: 20,006 assertions passed 1.17s
- Email validation process: 55 assertions passed 38.19ms
- User CQRS repository: 57,106 assertions passed 1.79s
Total failed: 0 / 81,694 - DDD shared units PASSED 3.01s
2.12. DDD multi thread:
- Delete old database: 1 assertion passed 206us
- Start server: 1 assertion passed 14.94ms
- Single client test: 1,002 assertions passed 252.56ms
- Multi threaded clients test: 21 assertions passed 171.65ms
Total failed: 0 / 1,025 - DDD multi thread PASSED 451.50ms
Ubuntu 18.04.4 LTS - Linux 5.3.0-46-generic (cp65001)
4 x Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz (x64)
Using mORMot 1.18.5960
TSQLite3LibraryStatic 3.31.0 with internal MM
Generated with: Free Pascal 3.2 64 bit compiler
Time elapsed for all tests: 2m45
Performed 2020-04-23 12:03:08 by ab on devlaptop
Total assertions failed for all test suits: 0 / 43,253,559
! All tests passed successfully.
Heap dump by heaptrc unit of /home/ab/dev/lib/SQLite3/fpc/bin/x86_64-linux/TestSQL3
66536574 memory blocks allocated : 20435323600/20595511608
66536574 memory blocks freed : 20435323600/20595511608
0 unfreed memory blocks : 0
True heap size : 18446744073708601344
True free heap : 18446744073708601344
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment